2014-03-03 101 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将永远是真实的。

  • 要返回到代码中的前一点,至少需要一个标签才能跳转到该代码。