Как предотвратить запуск приложения в пакетном режиме?

Как предотвратить запуск приложения в пакетном режиме?

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

решение1

Единственный способ, который я могу придумать, чтобы сделать это с помощью пакетного скрипта, — это оставить .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

Связанный контент