41 votes

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

Je lance un événement post-compiler dans Visual Studio qui arrête IIS s'il est toujours en cours d'exécution après la compilation :

taskkill /f /im w3wp.exe

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

Erreur 1 Le processus "w3wp.exe" n'a pas été trouvé. xxx\EXEC

Y a-t-il un moyen de dire à taskkill d'ignorer le problème s'il ne peut pas trouver un processus en cours d'exécution correspondant ?

31voto

Ana cleto Points 11

Au lieu d'exécuter une commande, est-ce qu'exécuter un petit fichier batch fonctionnerait à la place ?

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

29voto

user63078 Points 26

La solution que j'ai trouvée à cela a été d'exécuter

START /wait taskkill /f /im w3wp.exe

Il retourne un succès à partir de la commande START, et toute erreur lancée par TASKKILL est affichée dans la nouvelle fenêtre de console

17voto

Cela fonctionne bien aussi:

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

11voto

acarlon Points 211

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

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

Info de: ici

5voto

nicovota Points 161

Ceci est une solution en une seule ligne.

Il exécutera taskkill uniquement si le processus est vraiment en cours d'exécution, sinon il informera simplement qu'il ne fonctionne pas.

tasklist | find /i "w3wp.exe" && taskkill /im w3wp.exe /F || echo process "w3wp.exe" non en cours d'exécution.

Ceci est la sortie dans le cas où le processus était en cours d'exécution:

w3wp.exe           1960 Services                   0    112,260 K
SUCCESS: Le processus "w3wp.exe" avec le PID 1960 a été terminé.

Ceci est la sortie dans le cas où il n'est pas en cours d'exécution:

process "w3wp.exe" non en cours d'exécution.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X