批处理循环未按预期执行

时间:2013-04-04 14:21:11

标签: loops batch-file goto

我正在编写一个脚本来通过IPMI启动系统。在启动其他机器之前必须可以使用其中一台机器。

我写了一个简单的循环,希望它可以工作,但它给了我一些麻烦

:PING_LOOP
ping -n 1 -w 1000 <IP Address>
IF %ERRORLEVEL% NEQ 0 GOTO PING_LOOP

其中<IP Address>是我需要等待的机器的IP地址才能继续。循环适用于3或4次迭代,但在此之后失败,即使系统尚未到达。有这个原因吗?

编辑:此脚本正在从Win Server 2008 R2计算机上运行

1 个答案:

答案 0 :(得分:2)

好吧想通了。

显然,当你ping某事而你获得Destination host unreachable它会产生ERRORLEVEL 0即使你没有得到ping,这是没有意义的对我来说。也许我只是不完全理解ping如何运作

但这是一个快速修复。我只解析出TTL。这有点天真,但它适用于我的应用程序。

:PING_LOOP
ping -n 1 -w 1000 <IP Address> | find "TTL"
IF %ERRORLEVEL% NEQ 0 GOTO PING_LOOP