¿Alguna forma de escribir un archivo .bat de Windows para matar procesos? [cerrado]

114

Cada vez que enciendo mi máquina de desarrollo propiedad de la empresa, tengo que matar más de 10 procesos usando el Administrador de tareas o cualquier otra aplicación de gestión de procesos solo para obtener un rendimiento decente de mi IDE. Sí, estos son procesos de programas que mi empresa instala en mi máquina por motivos de seguridad y cumplimiento. Lo que me gustaría hacer es tener un archivo .bat o un script de algún tipo con el que pueda matar los procesos en cuestión.

¿Alguien sabe cómo hacer esto?

codeLes
fuente
Esto debería ser útil también cuando se encuentra en un entorno de automatización y un subproceso de ejecución necesita ser terminado si no se completa o no responde en una cantidad de tiempo decente.
Danny Staple
Publiqué este enlace de pregunta a todos mis colegas directos porque somos desarrolladores indirectos de 20 S / W en una empresa con 2000 ingenieros indirectos (haciendo CAD). Estamos luchando permanentemente con el departamento de administración de TI porque (debido a la política de seguridad) casi no podemos hacer nuestro trabajo ... (No ayuda técnicamente, pero es bueno escuchar que otros desarrolladores de S / W parecen tener problemas similares .)
Scheff

Respuestas:

171

Puede hacer esto con ' taskkill '. Con el parámetro / IM, puede especificar nombres de imágenes.

Ejemplo:

taskkill /im somecorporateprocess.exe

También puede hacer esto para ' forzar ' matar:

Ejemplo:

taskkill /f /im somecorporateprocess.exe

Simplemente agregue una línea por proceso que desee eliminar, guárdelo como un archivo .bat y agréguelo en su directorio de inicio. ¡Problema resuelto!

Si se trata de un sistema heredado, PsKill hará lo mismo.

Factor místico
fuente
34
LOL - "somecorporateprocess.exe" prácticamente resume la desconexión de la TI corporativa de los equipos de desarrollo.
maplemale
8
Tuve éxito usando taskkill /F /IM <processname.exe> /Tpara forzar el cierre de todos los procesos por su nombre.
Benj
no funciona en win10 para el proceso de matar fondos. todo el proceso en segundo plano en win 10 nombrado RuntimeBroker.exey cuando intenta matar no pasó nada.
Mostafa
106
taskkill /f /im "devenv.exe"

esto matará a la fuerza el pid con el nombre exe "devenv.exe"

equivalente a -9 en el comando nix'y kill

DesarrollandoChris
fuente
3
No funcionó hasta que agregué el indicador / f al comando. ¡Gracias!
Denis M. Kitchen
4
Esto eliminará TODAS las entradas con el nombre proporcionado. Particularmente útil cuando un programa falla y abre notepad.exe 1000 veces en segundo plano:] * ejem *
Richard de Wit
8

Como TASKKILL puede no estar disponible en algunas ediciones básicas de Windows, aquí algunas alternativas:

TSKILL processName

o

TSKILL PID

Tenga en cuenta que processNameno debe tener el .exesufijo y está limitado a 18 caracteres.

Otra opcion es WMIC:

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

wmic ofrece incluso más flexibilidad que taskkill con sus comparadores similares a SQL. Con wmic Path win32_process getusted puede ver los archivos disponibles que puede filtrar (y %se pueden usar como comodín).

npocmaka
fuente
5

Supongo que, como desarrollador, tiene cierto grado de control administrativo sobre su máquina. Si es así, desde la línea de comandos, ejecute msconfig.exe. Puede eliminar muchos procesos incluso desde el inicio, eliminando así la necesidad de matarlos con las soluciones mencionadas anteriormente.

Jason Z
fuente
5

Obtén Autoruns de Mark Russinovich, el tipo de Sysinternals que descubrió Sony Rootkit ... El mejor software que he usado para limpiar cosas que se inician automáticamente.

Brian Stewart
fuente
4

Descarga PSKill . Escriba un archivo por lotes que lo llame para cada proceso que desee que muera, pasando el nombre del proceso para cada uno.

Shog9
fuente
0

Encuentre la lógica a continuación donde funciona en la condición.

Si simplemente llamamos taskkill /im applicationname.exe, se matará solo si este proceso se está ejecutando. Si este proceso no se está ejecutando, arrojará un error.

Para verificar antes de que takskillse llame, se puede hacer una verificación para asegurarse de que la ejecución taskkillse ejecutará solo si el proceso se está ejecutando, de modo que no arroje un error.

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

if errorlevel 1 taskkill /f /im "applicationname.exe"
Sarath Avanavu
fuente
1
más fácil simplemente redirigir el mensaje de error de taskkillanul
Stephan
0

Aquí escribí un comando de ejemplo que puede pegar en la cmdlínea de comandos y está escrito chrome.exe.

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

El for solo toma todos los PIDmensajes de correo electrónico enumerados en el siguiente tasklistcomando y se ejecuta TASKKILL /PIDen cadaPID

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

Si usa for en un archivo por lotes, simplemente use %% P en lugar de% P

Eduard Florinescu
fuente