Abordagem baseada em títulos de janela
@ techie007 sugeriu a eliminação do explorer.exe
com o título da janela N/A
.
Comando
for /f "tokens=2,10" %%p in ('tasklist /nh /v /fi "imagename eq explorer.exe"') do if "%%q"=="N/A" taskkill /f /pid %%p
Como funciona
-
tasklist /nh /v /fi "imagename eq explorer.exe"
lista com verbosidade todos os processos com nome de imagemexplorer.exe
. -
for /f "tokens=2,10" %%p in ('COMMAND1') do COMMAND2
executa
COMMAND1
. Para cada linha de saída, ele define as variáveis%%p
e%%q
para o segundo e décimo "token" (delimitado por espaço) e executaCOMMAND2
.No caso de
taskkill /v
,%%p
agora contém o PID e%%q
(início do) título da janela. -
if "%%q"=="N/A" taskkill /f /pid %%p
verifica se o título da janela éN/A
.Se sim, encerra o processo com
taskkill
.
Abordagem baseada no uso de memória
@ A Syntech apontou que isso não é confiável para o Windows Explorer, mas nos programas, o processo principal sempre tem o maior uso de memória.
Comando
for /f "tokens=2" %%p in ('tasklist /nh /fi "imagename eq explorer.exe" ^| sort /+65') do @set explorerpid=%%p
taskkill /f /pid %explorerpid%
Como funciona
-
tasklist /nh /fi "imagename eq explorer.exe"
lista todos os processos com nome de imagemexplorer.exe
. -
sort /+65
classifica a saída anterior, começando com o 65º caractere (onde o uso de mem começa). -
for /f "tokens=2" %%p in ('COMMAND') do @set explorerpid=%%p
conjuntosexplorerpid
para a segunda entrada (tokens=2
) - delimitada por espaços - de cada linha da saída deCOMMAND
, que é o PID correspondente. -
Como a saída de
tasklist
foi classificada,explorerpid
contém o PID reivindicado etaskkill
encerra o processo.