Taskkill.exe: jangan melempar kesalahan jika proses tidak berjalan


33

Saya menjalankan acara pembuatan postingan Visual Studio yang mematikan IIS jika masih berjalan setelah kompilasi:

taskkill /f /im w3wp.exe

Berikut ini berfungsi dengan baik jika IIS masih berjalan, tetapi membuat kesalahan jika sudah berhenti:

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

Apakah ada cara untuk memberitahu taskkill untuk mengabaikan masalah jika tidak dapat menemukan proses yang cocok berjalan?

Jawaban:


29

Alih-alih menjalankan satu perintah, apakah menjalankan file batch kecil sebagai gantinya?

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

22

Solusi yang saya temukan untuk ini adalah menjalankan

START /wait taskkill /f /im w3wp.exe

Ini mengembalikan sukses dari perintah MULAI, dan setiap kesalahan yang dilemparkan oleh TASKKILL dilemparkan di jendela konsol baru


5
dan jika Anda ingin menunggu tugas untuk dibunuh sebelum melanjutkan dengan file batch. cukup tambahkan:START /wait taskkill /f /im w3wp.exe
jezternz

1
Menunggu adalah detail yang sangat penting. Saya akan mengeditnya menjadi jawaban asli untuk menghindari kebingungan. Terima kasih @jezternz!
Dustin Gamester

15

Ini juga berfungsi dengan baik:

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

Saya tidak bisa menjalankan ini - versi taskkill saya sepertinya tidak mengenali "STATUS dan eq RUNNING". Namun, "MEMUSAGE gt 2" tidak berfungsi.
Polyfun

Saya menemukan bahwa "STATUS eq UNKNOWN" adalah opsi yang lebih baik untuk menangkap proses yang mungkin atau mungkin tidak macet (tapi bagaimanapun, Anda tidak menginginkannya)
Andy Krouwel

10

Atau, ini hanya akan mengembalikan pesan info jika tidak ditemukan:

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

Info dari: di sini


3

Ini adalah solusi satu baris .

Ini akan menjalankan taskkill hanya jika prosesnya benar-benar berjalan jika tidak maka itu hanya info bahwa itu tidak berjalan.

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

Ini adalah output jika proses sedang berjalan:

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

Ini adalah output jika tidak berjalan:

process "w3wp.exe" not running.

0

Memaksa proses untuk membunuh (jika proses sedang berjalan), dan jangan menampilkan informasi apa pun.

Perintah berikut ini berfungsi dengan baik.

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


Bagaimana ini akan membunuh w3wp.exe?
Jason Aller
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.