답변:
한 가지 해결책은 무한 for
루프가 있는 배치 파일을 사용 하여 응용 프로그램이 닫히면 자동으로 다시 시작하는 것입니다. 애플리케이션 설계 방식에 따라 여기에는 두 가지 가능성이 있습니다.
응용 프로그램이 시작되어 동일한 프로세스에서 실행되는 경우 매우 간단한 배치 파일을 사용할 수 있습니다.
@echo off
:Start
C:\path\to\application.exe
:: Wait 30 seconds before restarting.
TIMEOUT /T 30
GOTO:Start
이것은 무한정 실행됩니다. 언제든지 application.exe
닫히거나 충돌하면 배치 파일이 다시 시작됩니다.
이 것 없는 경우 일 application.exe
출시 subapp.exe
후하고 application.exe
닫습니다. 이 경우 더 복잡한 것이 필요합니다.
@ECHO off
SET _PollingInterval=30
:BatchStart
C:\path\to\application.exe
:Start
:: Uncomment the following line on versions of Windows prior to Windows 7 and comment out the TIMEOUT line. The PING solution will not be 100% accurate with _PolingInterval.
:: PING 127.0.0.1 -n %_PollingInterval% >nul
TIMEOUT /T %_PollingInterval%
SET PID=
FOR /F "tokens=2 delims= " %%i IN ('TASKLIST ^| FIND /i "subapp.exe"') DO SET PID=%%i
IF [%PID%]==[] (
ECHO Application was not running. Restarting script.
GOTO BatchStart
)
GOTO Start
GOTO:EOF
응용 프로그램에 다양한 프로세스가있을 수있는 경우 FINDSTR /i "subapp.exe application.exe"
대신 대신 비슷한 것을 사용할 수 FIND /i "subapp.exe"
있지만 공백을 FINDSTR
델리 미네 이터 로 사용하는 것처럼 이름이 공백 인 프로세스에는 작동하지 않습니다 .
이러한 배치 파일을 시작한 후에 중지하려면 응용 프로그램을 열어두고 명령 프롬프트로 전환하십시오. 그런 다음 Ctrl+를 사용 C하고 스크립트를 끝내고 싶다는 것을 인정하십시오. 스크립트가 종료되면 응용 프로그램을 닫습니다.
더 읽을 거리 :
PING
FIND
)^
루프 의 문자는 이스케이프 문자입니다.TIMEOUT
명령을 사용할 수 있습니다 . 대답의 예에 추가했습니다.