【发布时间】:2013-04-04 14:21:10
【问题描述】:
我正在编写一个脚本来通过 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 机器上运行
【问题讨论】:
-
刚刚在我的机器上尝试了一个无法访问的 ip (128.10.0.2),循环工作
-
有趣。赢得服务器 2008 r2?
-
在 windows 7 x64 和 2008 r2 x64 上试过
-
让我感到困惑的是,它在给出错误读数之前会循环几次。在它失败后我立即手动 ping 它,它仍然得到一个
ERRORLEVEL的 1 -
@Franklin 我已经在 XP 上尝试过(我所有可用的)并且它工作正常,无论是对于不存在的主机名和 IP 地址。您是否尝试过每次打印出
%ERRORLEVEL%以确定值是什么(可能服务器 暂时可用)?另外,您是否尝试按照Raymond Chen's suggestion 将测试编写为IF ERRORLEVEL 1?它不应该有所作为,但可能还有一些您尚未发布的其他代码,这意味着它会有所作为......
标签: loops batch-file goto