Taskkill.exe: no arroje un error si el proceso no se está ejecutando


33

Estoy ejecutando un evento posterior a la compilación de Visual Studio que cierra IIS si aún se está ejecutando después de la compilación:

taskkill /f /im w3wp.exe

Lo siguiente funciona perfectamente si IIS todavía se está ejecutando, pero arroja un error si ya se detuvo:

Error 1 The process "w3wp.exe" not found. xxx\EXEC

¿Hay alguna manera de decirle a Taskkill que ignore el problema si no puede encontrar un proceso de ejecución coincidente?

Respuestas:


29

En lugar de ejecutar un comando, ¿funcionaría en su lugar ejecutar un pequeño archivo por lotes?

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

22

La solución que encontré para esto fue ejecutar

START /wait taskkill /f /im w3wp.exe

Devuelve un éxito del comando START, y cualquier error arrojado por TASKKILL se arroja en la nueva ventana de la consola


55
y si desea esperar a que se eliminen las tareas antes de continuar con el archivo por lotes. simplemente agregue:START /wait taskkill /f /im w3wp.exe
jezternz

1
La espera es un detalle muy importante. Lo editaré en la respuesta original para evitar confusiones. Gracias @jezternz!
Dustin Gamester

15

Esto también funciona bien:

taskkill /IM "w3wp.exe" /F /FI "STATUS eq RUNNING"

No pude hacer que esto funcionara: mi versión de taskkill no parece reconocer "STATUS eq RUNNING". Sin embargo, "MEMUSAGE gt 2" funciona.
Polyfun

Descubrí que "ESTADO eq DESCONOCIDO" era una mejor opción para detectar procesos que pueden estar atascados o no (pero de cualquier manera, no los quieres)
Andy Krouwel

10

O bien, esto solo devolverá un mensaje de información si no se encuentra:

taskkill /f /im w3wp.exe /fi "memusage gt 2"

Información de: aquí


3

Esta es una solución de una línea .

Ejecutará taskkill solo si el proceso realmente se está ejecutando; de lo contrario, solo informará que no se está ejecutando.

tasklist | find /i "w3wp.exe" && taskkill /im w3wp.exe /F || echo process "w3wp.exe" not running.

Este es el resultado en caso de que el proceso se esté ejecutando:

w3wp.exe           1960 Services                   0    112,260 K
SUCCESS: The process "w3wp.exe" with PID 1960 has been terminated.

Este es el resultado en caso de que no se ejecute:

process "w3wp.exe" not running.

0

Obliga al proceso a matar (si el proceso se está ejecutando) y no genera ninguna información.

El siguiente comando funciona bien.

taskkill /f /im w3wp.exe /t /fi "status eq running">nul


¿Cómo matará esto a w3wp.exe?
Jason Aller
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.