使用ERRORLEVEL 0在DOS批处理中创建延迟

时间:2014-01-03 18:06:24

标签: windows batch-file

我之前发现这种方法可以模拟正在运行的批处理文件(将该行插入到.bat文件中): PING 1.1.1.1 -n 1 -w 2000> NUL

它工作并产生2秒的延迟,但由于它返回errorlevel = 1而导致我的问题 enter image description here

为什么不返回errorlevel = 0?

4 个答案:

答案 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及更高版本