Como evitar que um aplicativo seja executado em lote?

0

Por exemplo: eu executo o taskmgr.exe e ele fecha. Como faço isso com lote ?

    
por Mahammad50055 20.10.2016 / 15:38

1 resposta

0

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
    
por 20.10.2016 / 18:32

Tags