乔山石 發表於 2020-3-31 10:56:20

vbs ping实现的两种方式

<p>对于vbs中ping的实现可以通过两种方式 :</p>
<ul>
<li>1、调用系统ping命令;</li>
<li>2、使用wmi查询pingstate类处理。<br />
</li>
</ul>
<p>1、调用系统ping命令</p>
<div class="jb51code">
<pre class="brush:vb;">
Set wshell = CreateObject("WScript.Shell")
wshell.run("ping 182.183.101.1",0.true)

</pre>
</div>
<p>对于以上调用,如果想对其进行过滤,可以考虑将运行结果重定向到文件,在读到一个string中,查找其中是否有timeout或超时字符,判断是否超时。本打算直接拼接命令重定向到文件,但怎么都不成功,所以run调用一个bat,bat中写:ping 192.168.101.1 -n 1 -w 1200&nbsp;</p>
<p>2、使用wmi查询pingstate类处理:</p>
<div class="jb51code">
<pre class="brush:vb;">
'url = "www.baidu.com"
url = "119.75.217.109"
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp; strComputer &amp; "\root\cimv2")
Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '" &amp; url &amp; "'")
For Each objPing in colPings
MsgBox url &amp; " responded to ping." &amp; vbcrlf &amp;_
"Responding Address: " &amp; objPing.ProtocolAddress &amp; vbcrlf &amp;_
"Responding Name: " &amp; objPing.ProtocolAddressResolved &amp; vbcrlf &amp;_
"Bytes Sent: " &amp; objPing.BufferSize &amp; vbcrlf &amp;_
"Time: " &amp; objPing.ResponseTime &amp; " ms"
Next

</pre>
</div>
頁: [1]
查看完整版本: vbs ping实现的两种方式