Taskkill.exe: không ném lỗi nếu quá trình không chạy


33

Tôi đang chạy một sự kiện xây dựng bài đăng của Visual Studio tắt IIS nếu nó vẫn chạy sau khi biên dịch:

taskkill /f /im w3wp.exe

Các hoạt động sau đây hoạt động hoàn hảo nếu IIS vẫn đang chạy, nhưng sẽ xuất hiện lỗi nếu nó đã dừng:

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

Có cách nào để thông báo cho taskkill bỏ qua vấn đề nếu nó không thể tìm thấy quy trình chạy phù hợp?

Câu trả lời:


29

Thay vì chạy một lệnh, thay vào đó, chạy một tệp bó nhỏ có hoạt động không?

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

22

Giải pháp tôi tìm thấy là chạy

START /wait taskkill /f /im w3wp.exe

Nó trả về thành công từ lệnh START và bất kỳ lỗi nào được TASKKILL đưa ra đều được đưa vào cửa sổ giao diện điều khiển mới


5
và nếu bạn muốn đợi các tác vụ bị hủy trước khi tiếp tục với tệp bó. chỉ cần thêm:START /wait taskkill /f /im w3wp.exe
jezternz

1
Sự chờ đợi là một chi tiết rất quan trọng. Tôi sẽ chỉnh sửa nó thành câu trả lời ban đầu để tránh nhầm lẫn. Cảm ơn @jezternz!
Trò chơi Dustin

15

Điều này cũng hoạt động tốt:

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

Tôi không thể làm việc này - phiên bản tác vụ của tôi dường như không nhận ra "TÌNH TRẠNG eq CHẠY". Tuy nhiên, "MEMUSAGE gt 2" không hoạt động.
Polyfun

Tôi thấy rằng "STATUS eq UNKNOWN" là một lựa chọn tốt hơn để nắm bắt các quy trình có thể hoặc không bị kẹt (nhưng dù sao đi nữa, bạn không muốn chúng)
Andy Krouwel

10

Hoặc, điều này sẽ chỉ trả về một thông tin thông tin nếu không tìm thấy:

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

Thông tin từ: tại đây


3

Đây là một giải pháp một dòng .

Nó sẽ chạy taskkill chỉ khi tiến trình thực sự chạy nếu không nó sẽ chỉ thông tin rằng nó không chạy.

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

Đây là đầu ra trong trường hợp tiến trình đang chạy:

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

Đây là đầu ra trong trường hợp không chạy:

process "w3wp.exe" not running.

0

Buộc quá trình tiêu diệt (nếu quá trình đang chạy) và không xuất bất kỳ thông tin nào.

Các lệnh sau hoạt động tốt.

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


Làm thế nào điều này sẽ giết w3wp.exe?
Jason Aller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.