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 ?

3voto

Derek Points 141

Pour un événement pré-construit dans visual studio, cela a fonctionné pour moi:

taskkill /f /im scriptcode.exe 2>nul 1>nul
exit 0

voir: https://stackoverflow.com/questions/5806444/swallowing-errors-in-pre-build-steps-in-visual-studio-2010

J'avais quelques problèmes avec des vérifications d'état = en cours, le processus existait mais n'avait pas d'état = en cours. Je l'utilisais auparavant.

1voto

Ella Points 721

Force le processus à s'arrêter (si le processus est en cours d'exécution), et ne pas afficher d'informations.

La commande suivante fonctionne bien.

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

0voto

Andrew Dennison Points 191

Réponse courte :

Ajoutez || exit 0

Détails

Je ne peux pas tester le cas exact donné, mais j'ai trouvé que cela fonctionne :

pskill w3wp.exe || exit 0

Le '||' signifie exécuter la deuxième commande si la première échoue. Un ';' devrait également fonctionner.

De plus, pour totalement supprimer la sortie d'une commande, utilisez quelque chose comme :

rem totalement silencieux
rem l'ordre est important. Rediriger puis joindre
some_cmd 1>nul: 2>>&1

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