2013-04-04 110 views
2

我正在編寫腳本以通過IPMI啓動系統。在啓動其他機器之前,其中一臺機器必須可到達。批處理循環沒有按預期執行

我寫了一個簡單的循環,期待它的工作,但它給了我一些麻煩

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

哪裏<IP Address>是機器,我需要繼續之前等待的IP地址。該循環適用於3或4次迭代,但之後失敗,即使系統尚未到達。是否有一個原因?

編輯:這個劇本正在從一個雙贏Server 2008 R2的計算機

+1

剛剛在我的機器上試過一個IP不可達(128.10.0.2),循環工作 – 2013-04-04 14:28:21

+0

有趣。 win server 2008 r2? – Franklin 2013-04-04 14:29:10

+0

嘗試在Windows 7 x64和2008 r2 x64 – 2013-04-04 14:32:05

回答

2

好吧想通了運行。

很顯然,當你ping的東西,你會得到Destination host unreachable它產生的0ERRORLEVEL即使你沒有得到一平,這沒有任何意義了我。也許我只是不完全瞭解如何ping工程

雖然這是一個快速修復。我只是解析TTL。這有點幼稚,但適用於我的應用程序。

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

幼稚或不,[我的意見](http://stackoverflow.com/questions/5037382 /批處理文件循環ping-output-to-file-hosts-that-are-up/5039117#5039117「批處理文件 - 循環ping-輸出到文件主機」)是相同的你的,我沒有'迄今爲止找到了其他解 – 2013-04-04 22:11:07