
예: 나는 달린다taskmgr.exe그리고 닫힙니다. 어떻게 해야 하나요?일괄?
답변1
배치 스크립팅을 통해 이 작업을 수행할 수 있다고 생각할 수 있는 유일한 방법은 .bat를 백그라운드에서 실행하면서 특정 응용 프로그램 프로세스 이미지 이름이 실행되는지 지속적으로 반복하고 확인하는 것입니다.
그러나 a) 처음부터 프로세스 실행을 중지하는 대신 프로세스를 자동 종료하려는 이유를 알 수 없습니다.
b) 배치 스크립트를 사용하여 이 작업을 수행하려는 이유를 알 수 없습니다. 배치 스크립트는 Windows 이벤트에 자동으로 응답하지 않습니다. 수행할 유일한 작업은 무언가가 실행 중인지 확인하는 무한히 실행되는 루프를 함께 묶는 것입니다.
c) 일괄 작업을 수행하는 것은 망치로 카드 집을 짓는 것과 같으며 저는 그것을 좋아합니다. 어쨌든 노인 여러분의 대답은 다음과 같습니다.
@ECHO OFF
:loop
set "app=TASKMGR.exe"
::Set Output of tasklist command to variable %TL%
FOR /F "tokens=* USEBACKQ" %%A IN (`TASKLIST /FI "IMAGENAME EQ %app%"`) DO (SET "TL=%%A")
::check for "info:no( tasks are running which...)"
::any other output, task exists, so kill it
IF "%TL:~0,8%" NEQ "INFO: No" (TASKKILL /FI "IMAGENAME EQ %app%")
::beware of velociraptors
goto :loop
하지만 개인적으로 나는 이 스크립트를 더 좋아합니다.
@ECHO OFF
MODE CON: COLS=80 LINES=2
set "A=*** "
:loop
set "app=TASKMGR.exe"
FOR /F "tokens=* USEBACKQ" %%A IN (`TASKLIST /FI "IMAGENAME EQ %app%"`) DO (SET "TL=%%A")
IF "%TL:~0,8%" NEQ "INFO: No" (TASKKILL /FI "IMAGENAME EQ %app%")
SET "A= %A:~0,15%"
echo (@)@):::::::D%a:~1,15%%APP%
if "%A%" equ " ***" set "A=*** "
goto :loop