web-dev-qa-db-fra.com

Taskkill.exe: ne génère pas d'erreur si le processus n'est pas en cours d'exécution

J'exécute un événement post-compilation Visual Studio qui ferme IIS s'il est toujours en cours d'exécution après la compilation:

taskkill /f /im w3wp.exe

Ce qui suit fonctionne parfaitement si IIS est toujours en cours d'exécution, mais génère une erreur s'il est déjà arrêté:

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

Existe-t-il un moyen de dire à taskkill d’ignorer le problème s’il ne parvient pas à trouver un processus en cours d’exécution?

32
Luk

Au lieu d'exécuter une commande, exécuter un petit fichier de commandes fonctionnerait-il à la place?

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

La solution que j’ai trouvée était de courir

START /wait taskkill /f /im w3wp.exe

Il renvoie un succès de la commande START et toute erreur renvoyée par TASKKILL est renvoyée dans la nouvelle fenêtre de la console.

22
Dustin Gamester

Cela fonctionne bien aussi:

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

Ou, cela retournera simplement un message d'information s'il n'est pas trouvé:

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

Info de: ici

10
acarlon

Ceci est une solution à une ligne .

Taskkill ne sera exécuté que si le processus est vraiment en cours d'exécution, sinon il sera simplement informé qu'il n'est pas en cours d'exécution.

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

Voici le résultat dans le cas où le processus était en cours d'exécution:

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

Ceci est la sortie dans le cas où ne fonctionne pas:

process "w3wp.exe" not running.
3
nicovota

Force le processus à tuer (si le processus est en cours d'exécution) et ne génère aucune information.

La commande suivante fonctionne bien.

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

0
PandllCom