2013-07-12 13 views
6

के माध्यम से स्वचालित रूप से प्रक्रिया को कैसे रोकें I बैच/cmd फ़ाइल से कोई प्रक्रिया चल रही है या नहीं, मैं कैसे जांच सकता हूं? और यदि प्रक्रिया चल रही है, तो मैं प्रक्रिया को स्वचालित रूप से कैसे रोकूं?बैच स्क्रिप्ट

एक cmd स्क्रिप्ट चीज़ की तरह, क्या कोई मुझे कुछ संकेत दे सकता है या मुझे इस तरह की स्क्रिप्ट बनाने में मदद कर सकता है।

उदाहरण (छद्म कोड):

If calc.exe is running       
Stop calc.exe 

मैं चाहता हूँ कुछ इस तरह:

@echo off 

:x 
PATH=C:\Windows\System32\calc.exe 
If calc.exe is ON goto Process_Stop 

:Process_Stop 
net stop calc.exe 
goto x 

उत्तर

13

सबसे पहले, आपके पास calc.exe जैसी प्रक्रिया को रोकने के लिए गलत आदेश है। नेट स्टॉप एक सेवा बंद कर देगा, लेकिन एक सामान्य कार्यक्रम प्रक्रिया नहीं। आप इसके बजाय TASKKILL चाहते हैं।

दूसरा - यदि आप जानते हैं कि यदि आप मौजूद हैं तो प्रक्रिया को मारना चाहते हैं, तो आपको क्यों लगता है कि आपको यह जांचना है कि यह इसे मारने से पहले पहले चल रहा है या नहीं? आप इस पर ध्यान दिए बिना प्रक्रिया को मारने का प्रयास कर सकते हैं। यदि यह अस्तित्व में नहीं है, तो एक त्रुटि उत्पन्न होती है, और कोई नुकसान नहीं हुआ है। यदि यह अस्तित्व में है, तो यह एक सफल संदेश के साथ मारा जाता है।

taskkill /im calc.exe 

आपको त्रुटि संदेश नहीं देखना चाहते हैं, तो stderr नुल को 2>nul का उपयोग कर अनुप्रेषित। यदि आप सफलता संदेश को नहीं देखना चाहते हैं, तो >nul का उपयोग करके stdout को nul पर रीडायरेक्ट करें।

taskkill /im calc.exe >nul 2>nul 

आप परिणाम के आधार पर कार्रवाई करने के लिए चाहते हैं, तो आप सफलता और विफलता के लिए सशर्त && और || ऑपरेटरों का उपयोग कर सकते हैं।

taskkill /im calc.exe >nul 2>nul && (
    echo calc.exe was killed 
) || (
    echo no process was killed 
) 

या आप ERRORLEVEL का उपयोग परिणाम पर निर्भर करता है कि क्या करना है यह निर्धारित करने के सकता है।

0

चेक बाहर कार्यसूची आदेश - यह कमांड आपको कार्यों और चल रही सेवाओं की एक सूची देता है। जांचें कि क्या आप रुचि रखते हैं कि नियमित अभिव्यक्ति

का उपयोग कर चल रहा है, तो सेवा या कार्य को मारने के लिए taskkill कमांड का उपयोग करें।

+0

यह उत्तर के बजाए एक टिप्पणी का अधिक है। – Neolisk

3

एक अधिक पठनीय और सरल कमांड कुछ इस तरह है:

taskkill/एफ/FI "IMAGENAME eq calc.exe"

यह पद्धति एक त्रुटि कोड भेजता है यदि प्रक्रिया नहीं है कभी नहीं चल रहा है जहां/आईएम स्विच प्रक्रिया नहीं चल रही है तो एक त्रुटि लौटाएं।

taskkill/एफ/FI "IMAGENAME eq calc * .exe" किसी भी प्रक्रिया है कि 'calc' के साथ शुरू होता है और नाम में '.exe' के साथ समाप्त होता मारने के लिए: आप की तरह वाइल्ड कार्ड का उपयोग कर सकते हैं।

+1

मैंने इसे कई वर्षों तक विजुअल स्टूडियो में समाधान में परियोजनाओं के लिए प्री-बिल्ड इवेंट के रूप में सफलतापूर्वक उपयोग किया है, fyi। – outbred

संबंधित मुद्दे