如何运行命令直到成功?

时间:2015-08-22 06:04:46

标签: windows batch-file

我仍然使用Windows批处理文件来执行基本任务。其中一个是检查我的互联网连接(pg.bat)只执行ping www.google.com

大多数情况下,我需要运行几次,直到成功为止(找不到主机错误)。起初我以为ping -t会起作用,但事实并非如此。当找不到主机时,它会立即停止。

如何在ping成功之前运行pg.bat? (即至少有一个默认的4个ping工作)

3 个答案:

答案 0 :(得分:8)

通常,您可以在批处理文件中使用label / goto语法。

:repeat
your-command || goto :repeat
echo Success!

如果第一个命令失败,||将只运行第二个命令。在这种情况下失败意味着非零退出代码,因此它只适用于将%errorlevel%设置为0表示成功或非零表示失败的命令。

对于ping.exe的特定情况,退出代码在失败时并不总是非零。在这种情况下,您可以使用find.exeping的输出中搜索成功消息,并设置我们需要的错误级别。

: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。那是"不等于"命令行脚本中的运算符。