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?
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
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.
Cela fonctionne bien aussi:
taskkill /IM "w3wp.exe" /F /FI "STATUS eq RUNNING"
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
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.
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