我仍然使用Windows批处理文件来执行基本任务。其中一个是检查我的互联网连接(pg.bat)只执行ping www.google.com
大多数情况下,我需要运行几次,直到成功为止(找不到主机错误)。起初我以为ping -t
会起作用,但事实并非如此。当找不到主机时,它会立即停止。
如何在ping成功之前运行pg.bat? (即至少有一个默认的4个ping工作)
答案 0 :(得分:8)
通常,您可以在批处理文件中使用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!
(感谢Stephan关于ping.exe退出代码的解释和解决方案)
答案 1 :(得分:4)
只需循环命令,直到它成功:
:Loop
ping -n 1 www.google.com | find "TTL="
if not %errorlevel% equ 0 goto :Loop
echo Connection established
答案 2 :(得分:0)
您需要将命令置于循环中,如下所示:
:Loop
ping -n 1 www.google.com | find "TTL="
if %errorlevel% neq 0 goto :Loop
echo Connection established
请注意上面的操作员neq。那是"不等于"命令行脚本中的运算符。