A única maneira de pensar em fazer isso por meio de scripts em lote seria deixar um .bat em execução em segundo plano, constantemente em loop e verificando a execução de um nome de imagem de processo de aplicativo específico.
Mas a) Não consigo ver por que você deseja automatizar um processo em vez de impedi-lo de ser executado em primeiro lugar
b) Não consigo ver por que você gostaria de fazer isso com um script em lote. Scripts em lote não responderão automaticamente aos eventos do Windows, e a única coisa a fazer é juntar um laço infinitamente em execução, que verifica se algo está sendo executado.
c) Fazer coisas em lote é como construir um castelo de cartas com um martelo e eu adoro isso, então aqui está uma resposta do mesmo jeito que você:
@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, 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