2011-02-02 9 views
15

मेरी बैच फ़ाइल में मैं कुछ अन्य आवेदन करने के लिए एक से अधिक पैरामीटर पास करना चाहते हैं।बैच में एकाधिक पैरा कैसे पास करें?

अब मैं इसे

app.exe %1 %2 

करते हैं और इसे केवल दो पैरामीटर पारित कर सकते हैं, लेकिन मैं (मैं नहीं बल्कि % 1% 2% लिखना नहीं होगा सभी मापदंडों कि बैच को पास किया जाता पास करना चाहते हैं 3 % 4 ...)

वहाँ यह करने के लिए कोई जादू रास्ता नहीं है?

उत्तर

35

एक जादू तरीका नहीं है! मुझे पता था, लेकिन मुझे याद नहीं आया।

अपने %*

3

आप तर्क के माध्यम से SHIFT शीघ्र और पाश इस्तेमाल कर सकते हैं। यहां एक प्रदर्शन उदाहरण है जहां आप अपने आवेदन को लोड करने के लिए तत्काल ईसीएचओ प्रॉम्प्ट को प्रतिस्थापित करेंगे।

@ECHO OFF 

SET PARAMS= 

:_PARAMS_LOOP 

REM There is a trailing space in the next line; it is there for formatting. 
SET PARAMS=%PARAMS%%1 
ECHO %1 
SHIFT 

IF NOT "%1"=="" GOTO _PARAMS_LOOP 

ECHO %PARAMS% 

PAUSE 

यह उपयोगी हो सकता है यदि आपको कुछ प्रकार की गतिशील पैरामीटर गिनती की आवश्यकता है, या यदि आप एक निश्चित पैरामीटर को अस्वीकार करना चाहते हैं।

+0

+1, केवल मैं खाली पैरामीटर की जांच रखेंगे * पहले * पैरामीटर प्रसंस्करण। –

3

एक और तरीका है एक डबल उद्धृत पैरामीटर का उपयोग करने के लिए है। अन्य एप्लिकेशन को कॉल करते समय, आप उद्धरण हटाने के लिए कमांड लाइन पर %~N डिवाइस का उपयोग करें।

कुछ मानकों आप आवेदन करने के लिए पारित करने के लिए करना चाहते हैं, तो खुद को डबल-कोटेड, उन उद्धरण वर्ण दो बार दोहराया जाना चाहिए।

@ECHO OFF 
CALL %1 %~2 

यहाँ विभिन्न मामलों के लिए स्क्रिप्ट बुला के उदाहरण (पास:

यहाँ एक उदाहरण स्क्रिप्ट आवेदन के नाम के रूप में पहले पैरामीटर और एक संयुक्त पैरामीटर सूची के रूप में दूसरे का उपयोग करता है आवेदन करने के लिए पारित करने के लिए है एक पैरामीटर या कई पैरामीटर या उद्धृत पैरामीटर)। एप्लिकेशन को

  1. दर्रा 1 पैरामीटर:

    C:\>mybatch.bat app.exe "app_param" 
    C:\>mybatch.bat app.exe app_param 
    
  2. पास कई मापदंडों:

    C:\>mybatch.bat app.exe "app_param1 app_param2 app_param3" 
    
  3. एक पैरामीटर है कि रिक्त स्थान शामिल हैं दर्रा (और इसलिए उद्धृत किया जाना चाहिए):

    C:\>mybatch.bat app.exe """parameter with spaces""" 
    
  4. एक संयुक्त उदाहरण: कुछ मानकों रिक्त स्थान के साथ कर रहे हैं, दूसरों को नहीं कर रहे हैं:

    C:\>mybatch.bat app.exe "param_with_no_spaces ""parameter with spaces"" another_spaceless_param"