
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