Existe alguma maneira de escrever um arquivo .bat do Windows para matar processos? [fechadas]


114

Cada vez que ligo minha máquina de desenvolvimento de propriedade da empresa, tenho que interromper mais de 10 processos usando o Gerenciador de Tarefas ou qualquer outro aplicativo de gerenciamento de processo apenas para obter um desempenho decente do meu IDE. Sim, são processos de programas que minha empresa instala em minha máquina para segurança e conformidade. O que eu gostaria de fazer é ter um arquivo .bat ou script de algum tipo com o qual posso matar os processos em questão.

Alguém sabe como fazer isto?


Isso deve ser útil também quando em um ambiente de automação e um subprocesso descontrolado precisa ser encerrado se não terminar ou responder em um período de tempo decente.
Danny Staple

Postei este link de pergunta para todos os meus colegas diretos porque somos 20 desenvolvedores de S / W em uma empresa com 2.000 engenheiros de rotatória (fazendo CAD). Estamos permanentemente lutando com o departamento de administração de TI porque (devido à política de segurança) quase não podemos fazer nosso trabalho ... (Não ajuda tecnicamente, mas é bom saber que outros desenvolvedores de S / W parecem ter problemas semelhantes .)
Scheff

Respostas:


171

Você pode fazer isso com ' taskkill '. Com o parâmetro / IM, você pode especificar nomes de imagem.

Exemplo:

taskkill /im somecorporateprocess.exe

Você também pode fazer isso para ' forçar ' a morte:

Exemplo:

taskkill /f /im somecorporateprocess.exe

Basta adicionar uma linha por processo que você deseja eliminar, salvá-lo como um arquivo .bat e adicionar em seu diretório de inicialização. Problema resolvido!

Se este for um sistema legado, o PsKill fará o mesmo.


34
LOL - "somecorporateprocess.exe" praticamente resume a desconexão da TI corporativa das equipes de desenvolvimento.
maplemale

8
Tive sucesso usando taskkill /F /IM <processname.exe> /Tpara forçar o fechamento de todos os processos pelo seu nome.
Benj

não funciona em win10 para processo de kill backgrounds. todo o processo em segundo plano no win 10 foi nomeado RuntimeBroker.exee quando tentou matar nada aconteceu.
Mostafa

106
taskkill /f /im "devenv.exe"

isso forçará o encerramento do pid com o nome exe "devenv.exe"

equivalente a -9 no comando nix'y kill


3
Não funcionou até que eu adicionei o sinalizador / f ao comando. Obrigado!
Denis M. Kitchen

4
Isso eliminará TODAS as entradas com o nome fornecido. Particularmente útil quando um programa sai pela culatra e abre o notepad.exe 1000 vezes em segundo plano:] * ahem *
Richard de Wit

8

Como o TASKKILL pode estar indisponível em algumas edições Home / básicas do Windows, aqui estão algumas alternativas:

TSKILL processName

ou

TSKILL PID

Lembre-se que processNamenão deve ter o .exesufixo e está limitado a 18 caracteres.

Outra opção é WMIC:

wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate

wmic oferece ainda mais flexibilidade do que taskkill com seus matchers semelhantes a SQL. Com wmic Path win32_process getvocê pode ver os campos disponíveis, você pode filtrar (e %pode ser usado como um curinga).


5

Suponho que, como desenvolvedor, você tenha algum grau de controle administrativo sobre sua máquina. Nesse caso, na linha de comando, execute msconfig.exe. Você pode remover muitos processos desde o início, eliminando assim a necessidade de eliminá-los com as soluções mencionadas acima.


5

Obtenha o Autoruns de Mark Russinovich, o cara da Sysinternals que descobriu o Sony Rootkit ... O melhor software que já usei para limpar coisas que são iniciadas automaticamente.


4

Baixe PSKill . Escreva um arquivo em lote que o chame para cada processo que você deseja inativo, passando o nome do processo para cada um.



0

Por favor, encontre a lógica abaixo onde funciona a condição.

Se simplesmente chamarmos taskkill /im applicationname.exe, ele irá matar apenas se este processo estiver em execução. Se esse processo não estiver em execução, ele gerará um erro.

Para verificar antes de takskillser chamado, uma verificação pode ser feita para garantir que execute taskkillserá executado somente se o processo estiver em execução, de forma que não ocorra erro.

tasklist /fi "imagename eq applicationname.exe" |find ":" > nul

if errorlevel 1 taskkill /f /im "applicationname.exe"

1
mais fácil simplesmente redirecionar a mensagem de erro de taskkillparanul
Stephan

0

Aqui, escrevi um comando de exemplo que você pode colar no cmdprompt da linha de comando e foi escrito para ele chrome.exe.

FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)

O for apenas pega todos os PIDs listados no tasklistcomando abaixo e executa TASKKILL /PIDa cadaPID

tasklist /FO Table /M "chrome*" /NH

Se você usar o for em um arquivo de lote, use %% P em vez de% P

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.