Например: я запускаю taskmgr.exe и он закрывается. Как мне сделать это с партией?

1 ответ1

0

Единственный способ сделать это с помощью пакетного скриптинга - это оставить .bat работающим в фоновом режиме, постоянно зацикливаясь и проверяя, работает ли конкретное имя образа процесса приложения.

Но а) я не понимаю, почему вы хотели бы автоматически убивать процесс, а не останавливать его запуск

б) Я не понимаю, почему вы хотите сделать это с помощью пакетного сценария. Пакетные сценарии не будут автоматически реагировать на события Windows, и единственное, что нужно сделать, - это собрать вместе бесконечно работающий цикл, который проверяет, работает ли что-то.

в) Делать вещи в пакетном режиме - это все равно что строить карточный домик с молотком, и мне это нравится, так что в любом случае, вот вам, старик, ответ:

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .