Como evitar que um aplicativo seja executado em lote?

Como evitar que um aplicativo seja executado em lote?

Por exemplo: eu corrotaskmgr.exee fecha. Como faço isso comlote?

Responder1

A única maneira que consigo pensar em fazer isso por meio de scripts em lote seria deixar um .bat em execução em segundo plano, fazendo um loop constante e verificando se há um nome de imagem de processo de aplicativo específico em execução.

Mas a) Não vejo por que você desejaria encerrar automaticamente um processo em vez de interromper sua execução em primeiro lugar

b) Não vejo por que você faria isso com um script em lote. Os scripts em lote não respondem automaticamente aos eventos do Windows, a única coisa a fazer é agrupar um loop em execução infinita que verifica se algo está em execução.

c) Fazer as coisas em lote é como construir um castelo de cartas com um martelo e eu adoro isso, então aqui vai uma resposta de qualquer maneira, seu velho:

@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

Pessoalmente, porém, prefiro este script

@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

informação relacionada