Taskkill.exe: यदि प्रक्रिया नहीं चल रही है, तो एक त्रुटि न डालें


33

मैं विज़ुअल स्टूडियो पोस्ट बिल्ड ईवेंट चला रहा हूं जो यदि संकलन के बाद भी चल रहा है तो IIS को बंद कर देता है:

taskkill /f /im w3wp.exe

यदि IIS अभी भी चल रहा है, तो निम्नलिखित पूरी तरह से काम करता है, लेकिन अगर यह पहले से ही बंद हो गया है तो एक त्रुटि फेंकता है:

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

क्या समस्या को अनदेखा करने के लिए टास्ककिल को बताने का कोई तरीका है अगर यह एक मिलान चल रही प्रक्रिया नहीं पा सकता है?

जवाबों:


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
प्रतीक्षा एक बहुत महत्वपूर्ण विवरण है। मैं भ्रम से बचने के लिए मूल उत्तर में संपादित करूंगा। धन्यवाद @ जेजेर्नज़्ज़!
डस्टिन गेमस्टर

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

यह एक लाइन समाधान है

यह केवल टास्ककिल चलाएगा यदि प्रक्रिया वास्तव में चल रही है अन्यथा यह सिर्फ जानकारी देगा कि यह नहीं चल रहा है।

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.