2013-03-25 3 views
0

프로그램을 배치 파일로 실행하고 있습니다. 일괄 스크립트가 일정 시간 이상 (예 : 10 초) 실행되면 중단하고 싶습니다. 그것은 무한 루프가 될 수 있기 때문입니다.배치 파일에서 시간 초과를 설정하여 무한 조건을 깨는 방법은 무엇입니까?

cls 
::set timeout here 
program.exe 
::after timeout continue from here 

Windows 배치 파일에서 어떤 제안이 있습니까? 또한 배치 스크립트에서 무한 루프 라인을 정의 할 수 있습니까?

+0

무엇을 모니터링하려고합니까, 배치 파일이 실행되는 시간 또는'program.exe '가 실행되는 시간입니까? * 10 초 *를 초과하면 '중단'은 무엇을 의미합니까 - 배치 파일을 종료 하시겠습니까, 아니면 'program.exe'를 종료 하시겠습니까? 그리고 '무한 루프의 라인'은 무엇을 의미합니까? –

+0

나는'program.exe'가 실행되는 시간을 의미했습니다. program.exe를 종료하고 배치 파일의 다음 줄에서 실행하십시오. '무한 루프의 행 '은 프로그램에서 무한한 상태가 발생한 곳을 암시한다. – Brucevilla

+0

이 질문은 단지 하나의'program.exe '에 대한 ridiculus 일지 모르지만 배치 파일에서 for 루프로 실행되는 둘 이상의'program.exe'가있는 경우 유용합니다. 어떤'program.exe'는 무한 루프를 가지고 있을지도 모르기 때문에. – Brucevilla

답변

3

배치 파일에서 프로그램을 실행하면, 당신은 그것을 실행 중과는 배치 파일에서 다음 명령을 실행하기 전에 종료 할 때까지 기다리거나 시작 프로그램을 바로 실행하면 배치 파일에서 계속 . 프로그램이 실행되는 시간을 측정 할 방법이 없습니다. 그러나 특정 기술을 사용하여 프로그램이 실행 중인지 확인하고 종료 할 수 있습니다. 지연을 삽입 할 수도 있습니다. 그래서 당신은 당신이 (다소)을 요구하고 무엇을 할 수 :

cls 
start program.exe 
ping -n 10 -w 1000 127.0.0.1 > nul 2>&1 
tasklist | find /i "program.exe" 
if %errorlevel%==0 taskkill /im program.exe 

이는 ping 프로그램을 시작하고 즉시 코드의 다음 줄을 실행하기 시작합니다. ping은 10 초 지연을 초래합니다. tasklist 명령은 목록을 프로그램을 찾는 find으로 파이프합니다. 목록에서 발견되면 아직 실행 중이며 errorlevel0으로 설정됩니다. 이는 다음 행이 프로그램을 종료 함을 의미합니다. program.exe 다음, tasklist 공통 프로그램 이름이고 taskkill이 같은 프로그램 이름을 가진 모든 프로세스를 종료 할 경우 때문,하지만 바보 같은 증거되지

(다만 인스턴스는 시작).

+0

설명해 주셔서 감사합니다. – Brucevilla

1

어때요?

start calc.exe 
ping -n 10 localhost >nul 
taskkill /F /IM calc.exe 
관련 문제