Taskkill para todos os processos em execução existentes em um diretório específico

2

Eu basicamente quero combinar os seguintes conjuntos de comandos. Em outras palavras, preciso verificar se algum executável existente em c: \ apps está em execução e, se houver algum, para eliminá-los. Quando esses comandos estiverem completos, farei um robocopy para atualizar os arquivos em c: \ apps. Este script será implantado com o SCCM. Por causa disso, eu preciso de todos os comandos para retornar errorlevel 0, caso contrário, ele reportará a implantação como falha.

tasklist 2>NUL | find /I /N "processname.exe">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im processname.exe

e

for /r c:\apps\ %%G in (*.exe) do taskkill /F /IM %%~nxG
    
por Nathan 13.03.2014 / 15:41

2 respostas

1

Eu proponho algo como:

WMIC PROCESS WHERE "ExecutablePath like 'C:\Apps\%%'" DELETE

Há um apóstrofo seguido diretamente por aspas, então você pode querer apenas copiar e colar isso.

Então, isso é apenas uma linha bastante simples (em vez de um arquivo em lotes).

Esta é uma técnica bastante poderosa e flexível. Então, se isso não funcionar exatamente como o que você tem em mente, brinque com isso. É provável que haja uma propriedade que seja exclusiva dos programas que você está tentando matar. Um exemplo para pesquisar os detalhes está disponível em: taskkill - finaliza tarefas com títulos de janelas que terminam com uma string específica: a resposta do TOOGAM que apresenta um cenário bastante semelhante.

    
por 06.01.2015 / 11:25
0

Veja este trabalho em lote para você.

@echo off

pushd c:\apps
FOR %%A IN (*.exe) do (
tasklist /FI "IMAGENAME eq %%A" 2>NUL | find /I /N "%%A">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im %%A
)
    
por 14.03.2014 / 21:38