如何运行命令,直到成功?

我仍然使用Windowsbatch file进行基本任务。 其中之一是检查我的互联网连接(pg.bat),只做ping www.google.com

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

如何运行pg.bat直到ping成功? (即至less默认的4个ping工作之一)

Solutions Collecting From Web of "如何运行命令,直到成功?"

通常,您可以在批处理文件中使用标签/ 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退出代码的解释和解决方案)

只是循环命令,直到成功:

 :Loop ping -n 1 www.google.com | find "TTL=" if not %errorlevel% equ 0 goto :Loop echo Connection established 

你需要把你的命令放在一个循环中,如下所示:

 :Loop ping -n 1 www.google.com | find "TTL=" if %errorlevel% neq 0 goto :Loop echo Connection established 

介意上面的运营商neq。 这是命令行脚本中的“不等于”操作符。