我仍然使用Windows批处理文件来执行基本任务。其中之一是检查我的互联网连接(pg.bat),它只执行一个ping www.google.com
大多数情况下,我需要运行它几次,直到它成功(主机找不到错误)。起初,我认为ping -t可以工作,但它不是。当找不到主机时,它会立即停止。
在ping成功之前,如何运行pg.bat?(即默认的4个ping中至少有一个有效)
发布于 2015-08-22 14:12:08
通常,您可以在批处理文件中使用label/goto语法。
:repeat
your-command || goto :repeat
echo Success!如果第一个命令失败,||将只运行第二个命令。在这种情况下,失败意味着非零退出代码,因此它只适用于将%errorlevel%设置为0(表示成功)或非零值(表示失败)的命令。
对于ping.exe的特定情况,失败时退出代码并不总是非零。在这种情况下,您可以使用find.exe在ping的输出中搜索成功消息,并根据需要设置错误级别。
:repeat
(ping -n 1 www.google.com | find "TTL=") || goto :repeat
echo Success!(感谢斯蒂芬对ping.exe退出码的解释和解决方案)
发布于 2015-08-22 14:11:03
只需循环该命令,直到它成功:
:Loop
ping -n 1 www.google.com | find "TTL="
if not %errorlevel% equ 0 goto :Loop
echo Connection established发布于 2017-10-01 17:20:46
您需要将您的命令放入循环中,如下所示:
:Loop
ping -n 1 www.google.com | find "TTL="
if %errorlevel% neq 0 goto :Loop
echo Connection established注意上面的运算符neq。这是命令行脚本中的“不等于”运算符。
https://stackoverflow.com/questions/32152934
复制相似问题