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.