2014-03-03 3 views
0

는 IP에 도달 실행 speciffic 프로그램을 다른 다음 5 분 정도 기다린 후 다시 시도는 IP윈도우 쉘 스크립트 루프

내가 쓴이 코드를 핑 (ping),하지만 약간의 조정이 필요하면 내가 핑 IP, 에 스크립트를 원하는

@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 명령은 컴퓨터에게 동일한 서브넷에 ping 경우 g 전송 된 패킷의 손실 된 경우 오류 수준을 설정할 수 있지만합니다 et 패킷 손실, 도달 할 수없는 운명. 따라서 errorlevel은 검사하기에 최적의 옵션이 아닙니다. 명령 출력에서 ​​"TTL ="텍스트를 찾는 것이 좋습니다.

  • 오류 수준은 높은 값에서 낮은 값으로 확인해야합니다. if errorlevel x 구조는 x보다 크거나 같은 모든 오류 수준 값에 대해 true입니다. 따라서 if errorlevel 0은 항상 true입니다.

  • 코드의 이전 지점으로 돌아가려면 적어도 점프하기위한 레이블이 필요합니다.