首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行命令直到成功?

问如何运行命令直到成功?
EN

Stack Overflow用户
提问于 2015-08-22 14:04:46
回答 3查看 12.8K关注 0票数 14

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-22 14:12:08

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

代码语言:javascript
复制
:repeat
your-command || goto :repeat
echo Success!

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

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

代码语言:javascript
复制
:repeat
(ping -n 1 www.google.com | find "TTL=") || goto :repeat
echo Success!

(感谢斯蒂芬对ping.exe退出码的解释和解决方案)

票数 22
EN

Stack Overflow用户

发布于 2015-08-22 14:11:03

只需循环该命令,直到它成功:

代码语言:javascript
复制
:Loop
ping -n 1 www.google.com | find "TTL="
if not %errorlevel% equ 0 goto :Loop
echo Connection established
票数 6
EN

Stack Overflow用户

发布于 2017-10-01 17:20:46

您需要将您的命令放入循环中,如下所示:

代码语言:javascript
复制
:Loop
ping -n 1 www.google.com | find "TTL="
if %errorlevel% neq 0 goto :Loop
echo Connection established

注意上面的运算符neq。这是命令行脚本中的“不等于”运算符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32152934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档