Taskkill.exe: не кидайте помилку, якщо процес не працює


33

Я запускаю події збирання після Visual Studio, яка вимикає IIS, якщо він все ще працює після компіляції:

taskkill /f /im w3wp.exe

Наведене нижче ідеально працює, якщо IIS все ще працює, але видає помилку, якщо він вже зупинився:

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

Чи є спосіб сказати taskkill ігнорувати проблему, якщо він не може знайти відповідний запущений процес?

Відповіді:


29

Замість того, щоб запустити одну команду, замість цього буде працювати невеликий пакетний файл?

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

22

Я знайшов це рішення для запуску

START /wait taskkill /f /im w3wp.exe

Він повертає успіх командою START, і будь-яка помилка, яку викидає TASKKILL, буде викинута у вікно нового консолі


5
і якщо ви хочете зачекати, коли завдання будуть вбиті, перш ніж продовжувати пакетний файл. просто додайте:START /wait taskkill /f /im w3wp.exe
jezternz

1
Очікування - дуже важлива деталь. Я відредагую це в оригінальній відповіді, щоб уникнути плутанини. Дякую @jezternz!
Дастін Істерстер

15

Це також добре працює:

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

Я не міг змусити це працювати - моя версія набору завдань, схоже, не розпізнає "STATUS eq RUNNING". Однак "MEMUSAGE gt 2" дійсно працює.
Поліфун

Я виявив, що "STATUS eq UNKNOWN" був кращим варіантом для лову процесів, які можуть або не можуть застрягнути (але в будь-якому випадку, ви не хочете їх)
Енді Крувел

10

Або це просто поверне інформаційне повідомлення, якщо його не знайдено:

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

Інформація від: тут


3

Це однолінійне рішення .

Він буде запускати taskkill лише у тому випадку, якщо процес дійсно працює, інакше він просто повідомить, що він не працює.

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

Це вихід у випадку, якщо процес запущений:

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

Це вихід у випадку, якщо не працює:

process "w3wp.exe" not running.

0

Примушує процес вбивати (якщо процес запущений), і не виводить ніякої інформації.

Наступна команда працює добре.

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


Як це вб'є w3wp.exe?
Джейсон Аллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.