2012-05-21 17 views
6

में कमांड उपलब्ध है या नहीं, मैं विंडोज के लिए बैच फ़ाइल लिख रहा हूं और कमांड 7z (7-ज़िप) का उपयोग कर रहा हूं। मैंने पैथ में इसका स्थान रखा है। क्या यह जांचने का एक अपेक्षाकृत आसान तरीका है कि आदेश उपलब्ध है या नहीं?जांचें कि बैच फ़ाइल

+0

निष्पादित न करें। आईएमओ का सबसे अच्छा तरीका होगा: http://stackoverflow.com/a/27014081/1724702 –

उत्तर

1

7z.exe निष्पादित करने का प्रयास 9 00 के %errorlevel% को वापस नहीं करेगा यदि आदेश नहीं मिला है। आप इसे देख सकते हैं।

7z.exe 
if %errorlevel%==9009 echo Command Not Found 
+0

एक अच्छा तरीका '7z.exe> ​​nul 2> और 1 होगा। echo कमांड नहीं मिला ', मुझे लगता है। – Joey

+0

आईएमओ का सबसे अच्छा तरीका होगा: http://stackoverflow.com/a/27014081/1724702 –

-1

हां, एक कमांड विंडो खोलें और "7z" टाइप करें (मुझे लगता है कि निष्पादन योग्य का नाम है)। अगर आपको यह कहते हुए कोई त्रुटि मिलती है कि आदेश या ऑपरेशन पहचाना नहीं गया है तो आप जानते हैं कि पथ विवरण में कहीं समस्या है, अन्यथा यह नहीं है।

1

हाँ,

@echo off 
set found= 
set program=7z.exe 
for %%i in (%path%) do if exist %%i\%program% set found=%%i 
echo "%found%" 
+0

यह रिक्त स्थान वाले उद्धृत पथों के साथ काम नहीं करेगा। – Joey

+0

धन्यवाद, आप क्यों कहते हैं 'सेट मिला ='? – rynd

+0

@ जॉय इसके लिए एक आसान फिक्स है। डबल कोट्स का प्रयोग करें। हालांकि, यह काम नहीं करेगा अगर स्वीकार किए गए समाधान के दौरान कमांड का विस्तार (exe, bat) निर्दिष्ट नहीं है। – khattam

16

मैं नहीं आदेश है कि क्या यह (PATH वातावरण चर में उपलब्ध है, कहते हैं) उपयोग के लिए उपलब्ध है की जाँच करने के क्रियान्वित करने की सलाह देते हैं जाएगा। तो मुझे लगता है सबसे अच्छा तरीका where आदेश का उपयोग किया जाएगा:

where 7z.exe >nul 2>nul 
if %errorlevel%==1 (
    @echo 7z.exe not found in path. 
    [do something about it] 
) 

>nul और 2>nul वैकल्पिक हैं; where कमांड द्वारा उत्पन्न मानक आउटपुट और मानक त्रुटि आउटपुट के प्रदर्शन को रोकने के लिए यहां उपयोग किया गया।

अद्यतन: क्यों आप निष्पादित करने के लिए नहीं चाहते हो सकता है:

  1. आप वास्तव में नहीं पता नहीं है हो सकता है क्या कार्यक्रम करता
  2. कार्यक्रम दुष्प्रभाव हो सकता है - यह कुछ करना हो सकता है कि क्या आप जानते हैं, लेकिन नहीं करना चाहते - जैसे हटाने फ़ाइलों के रूप में, कैश पुन: बनाने, आदि
  3. कार्यक्रम संसाधन किया जा सकता है गहन/धीमी गति से

समस्या यह निर्धारित करना है कि प्रोग्राम उपलब्ध है या नहीं, और इसलिए आपको इसे जांचना चाहिए।

+1

'आईएफ' शर्त शर्त: 'अगर त्रुटि 0 नहीं है'। ['IF'] देखें (http://ss64.com/nt/if.html)। – jpmc26

+1

आप इसे निष्पादित करने की अनुशंसा क्यों नहीं करेंगे? क्या यह सामान्य रूप से या इस विशेष मामले में है? – quimnuss

+2

निष्पादित करने के कई कारण नहीं: साइड इफेक्ट्स, आपको पता नहीं हो सकता कि प्रोग्राम क्या करता है, कार्यक्रम संसाधन-गहन/धीमा आदि हो सकता है। –

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