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!
ดัสติน Gamester

15

วิธีนี้ใช้ได้ดีเช่นกัน:

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

ฉันไม่สามารถใช้งานได้ - taskkill รุ่นของฉันดูเหมือนจะไม่รู้จัก "STATUS eq RUNNING" อย่างไรก็ตาม "MEMUSAGE gt 2" ใช้งานได้
Polyfun

ฉันพบว่า "สถานะ eq UNKNOWN" เป็นตัวเลือกที่ดีกว่าสำหรับการตรวจจับกระบวนการที่อาจจะติดอยู่หรือไม่ติดก็ได้ (แต่ไม่ว่าด้วยวิธีใดคุณไม่ต้องการ)
Andy Krouwel


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 จะฆ่าอย่างไร
Jason Aller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.