2014-03-03 98 views
0

我希望腳本的ping IP, 如果IP達到運行speciffic程序 否則等待5分鐘,然後重試ping的IPWindows shell腳本循環

本我寫的代碼,但它需要一些調整

@ECHO OFF 

ping 192.168.1.5 

IF ERRORLEVEL 0 GOTO Label0 
IF ERRORLEVEL 1 GOTO Label1 


:Label0 
%WinDir%\program.exe 
GOTO End 


:Label1 
timeout /t 300 
GOTO End 
+0

當你運行這個時會發生什麼?什麼不行? – monojohnny

+0

我的問題是讓腳本從延遲開始執行 – user3374544

回答

0
@echo off 
    setlocal enableextensions 

:loop  
    ping -n 1 -4 192.168.1.5 2>nul | find "TTL=" >nul 
    if errorlevel 1 (
     timeout /t 300 
     goto loop 
    ) 

    start "" "%WinDir%\program.exe" 

    endlocal 
    exit /b 
  • 在IPv4中,窗戶ping命令將設置ERRORLEVEL如果任何發送的數據包的丟失,但如果您ping一臺機器的同一子網,你摹沒有包丟失,只是一個無法達到的命運。所以,errorlevel不是檢查的最佳選擇。最好在命令的輸出中查找「TTL =」文本。

  • 錯誤級別應該檢查從高到低的值。對於任何大於或等於x的錯誤級別值,構造if errorlevel x將爲真。所以,if errorlevel 0將永遠是真實的。

  • 要返回到代碼中的前一點,至少需要一個標籤才能跳轉到該代碼。