我之前发现这种方法可以模拟正在运行的批处理文件(将该行插入到.bat文件中): PING 1.1.1.1 -n 1 -w 2000> NUL
它工作并产生2秒的延迟,但由于它返回errorlevel = 1而导致我的问题
为什么不返回errorlevel = 0?
答案 0 :(得分:2)
您正在模拟ping失败的延迟。因此,ping
返回错误级别1,因为ping本身失败。例如,如果执行成功的ping ping 127.0.0
,则errorlevel将为0。
正如Vinzenz的answer所述,在任何现代Windows系统(Vista +)上,都支持timeout
命令。它将为您提供可靠的错误级别,以检查延迟。
C:\>timeout 2 2>&1 1>nul
C:\>echo %ERRORLEVEL%
0
C:\>timeout 2 2>&1 1>nul
(<ENTER> pressed before timeout)
C:\>echo %ERRORLEVEL%
0
C:\>timeout 2 2>&1 1>nul
^C (<CONTROL>+C pressed before timeout)
C:\>echo %ERRORLEVEL%
-1073741510
C:\>timeout /nobreak 2 2>&1 1>nul
(<CONTROL>+C pressed before timeout)
C:\>echo %ERRORLEVEL%
1
答案 1 :(得分:1)
C:\Users>ping -n 3 localhost >nul
C:\Users>echo %errorlevel%
0
答案 2 :(得分:1)
对localhost使用ping。远程主机可能无法访问。这将导致错误。
答案 3 :(得分:0)
简单地使用超时:
C:\>timeout 2
Waiting for 0 seconds, press a key to continue ...
C:\>echo %errorlevel%
0
编辑:至少对于Windows 7及更高版本