标题: [问题求助] VBS如何规避因网络导致的延迟。 [打印本页]
作者: q121212 时间: 2015-4-27 11:30 标题: VBS如何规避因网络导致的延迟。
比如在一个局域网内有另外一台电脑:192.168.1.105
\\192.168.1.105\Music\黑豹乐队-靠近我.mp3
我要判断此文件是否存在,如果存在则a=1 不存在则a=0
'========正常思路是这样的=======
set fso =CreateObject("Scripting.FileSystemObject")
f1="\\192.168.1.105\Music\黑豹乐队-靠近我.mp3"
if fso.FileExists(f1) then a=1 else a=0
msgbox a
'================
正常情况下当然没问题
但是如果 192.168.1.105 这台电脑没有开机,用此命令的话会等很久才提示“0”
当然,上面的实例只是问题的具化,本质是网络是否通畅。
有没有办法规避这种情况?
VBS有没有可能给这个过程套个壳,限时(比如说500毫秒)判断是否成功,成功则继续;不成功则结束该过程并输出一个错误提示。
或者有其他思路?
求姐,求带飞。
作者: czjt1234 时间: 2015-4-27 14:04
- Set WMI = GetObject("Winmgmts:")
- t1 = Time()
- Set objPing = WMI.Get("Win32_PingStatus.Address='192.168.1.105'")
- Msgbox DateDiff("s", t1, Time())
- Msgbox objPing.GetObjectText_()
复制代码
作者: yu2n 时间: 2015-4-27 15:55
本帖最后由 yu2n 于 2015-4-27 16:54 编辑
- ' Ping 判断网络是否联通
- Function Ping(host)
- If CreateObject("WScript.Shell").Run("cmd /c ping -n 1 -w 500 " & host, 0, True) = 0 Then
- Ping = True
- Else
- Ping = False
- End If
- End Function
复制代码
- ' Ping 判断网络是否联通
- Function Ping(host)
- On Error Resume Next
- Ping=False : If (host="") Then Exit Function
- For Each o in GetObject("winmgmts:").ExecQuery _
- ("select * from Win32_PingStatus where address='" & host & "' and timeout=500")
- If (o.ResponseTime>=0) Then Ping=True : Exit For
- Next
- End Function
复制代码
用法:- If Ping("www.baidu.com") Then
- Msgbox "外网通。"
- Else
- Msgbox "外网不通。"
- End If
复制代码
作者: q121212 时间: 2015-5-11 19:25
回复 3# yu2n
感谢 yu2n 的提示
代码已经用上:
Set ws = WScript.CreateObject("WScript.Shell")
TheIP = "192.168.1.105"
PingSet = " -n 1 -l 1 -w 500 "
TheState = ws.run("ping.exe " & TheIP & PingSet ,0, True)
If TheState = 0 Then
MsgBox "Ping = True"
Else
MsgBox "Ping = False"
End If
判断网络是否畅通,当大于500毫秒即判断为超时。
久没上网,回复晚了。见谅见谅哈
作者: q121212 时间: 2015-5-11 19:27
回复 2# czjt1234
代码我试过了,不是我想要的。应该是理解错我的出发点了。 还是感谢。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |