2013-02-28 5 views
7

मैं एक बैच स्क्रिप्ट लिख रहा हूं जो एक निर्देशिका पर चलाएगा। मैं एक ध्वज (जैसे -r या/r या उस तरह कुछ) जोड़ने में सक्षम होना चाहता हूं जो स्क्रिप्ट को एकल निर्देशिका के बजाय फ़ोल्डर पेड़ चलाएगा। क्या बैच का उपयोग करके फ्लैग विकल्प जोड़ना संभव है?बैच स्क्रिप्ट में झंडे जोड़ना

धन्यवाद

+1

मंच कृपया? – user1428716

+0

[कमांड लाइन पैरामीटर] (http://www.robvanderwoude.com/parameters.php)। क्या आपने परेशान किया [यह गुगलिंग] (http://goo.gl/e6Kc9)? – rojo

+1

[विंडोज बैट फ़ाइल वैकल्पिक तर्क पार्सिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3973824/windows-bat-file-optional-argument-parsing) –

उत्तर

12

निश्चित रूप से यह संभव है। आदेश पंक्ति पैरामीटर% 1,% 2, आदि के रूप में अपने बैच फ़ाइल में पारित कर रहे हैं पहला तर्क ड्रॉप और अन्य सभी को स्थानांतरित करने के

IF "%1"=="/r" ECHO You passed the /r flag. 

उपयोग SHIFT (% 0 बैच फ़ाइल का नाम है।) एक से अधिक यदि आप कमांड लाइन में कहीं भी/आर होने की अनुमति देना चाहते हैं तो आप थोड़ा फैनसीयर प्राप्त करने के लिए इसका उपयोग कर सकते हैं। उदाहरण के लिए:

:processargs 
SET ARG=%1 
IF DEFINED ARG (
    IF "%ARG%"=="/r" ECHO You passed the /r flag. 
    SHIFT 
    GOTO processargs 
) 

या %* का प्रयोग कर एक FOR पाश इस तरह में (जो पूरे तर्क सूची तक विस्तारित है):

FOR %%A IN (%*) DO (
    IF "%%A"=="/r" ECHO You passed the /r flag. 
) 
+2

आप तर्कों को '% *' के रूप में भी संसाधित कर सकते हैं 'लूप' के लिए। [उदाहरण] (http://stackoverflow.com/a/15002975/1683264) – rojo

+0

अच्छा बिंदु @rojo। मैंने अपना जवाब अपडेट कर लिया है। –

+0

'SET ARG =% 1',' अगर नहीं '% 1' == '' '' के बजाय 'परिभाषित ARG' क्यों? – Sinjai

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