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.