2013-05-03 6 views
6

मुझे पता है कि मैं% 0 के साथ पहला तर्क प्राप्त कर सकता हूं, दूसरा% 1 के साथ, और इसी तरह .. और मैं% * के साथ सभी तर्क भी प्राप्त कर सकता हूं।विंडोज बैच फ़ाइल में बाकी तर्क कैसे प्राप्त करें?

क्या मुझे दूसरे तर्कों से सभी तर्क मिल सकते हैं? उदाहरण के लिए, अगर मैं

foo.bat bar1 bar2 bar3 bar4 

चलाने कैसे मैं केवल bar2 bar3 bar4 मिल सकता है?

उत्तर

3

SHIFT कमांड के साथ। लेकिन हर शिफ्ट के साथ आप पहले खो देंगे। यह %* परिवर्तन नहीं होगा, लेकिन आप सभी तर्क प्राप्त करने में सक्षम हो जाएगा, लेकिन पहले:

@echo off 
shift 

set "arg_line= " 
:parse_args 
if "%~1" NEQ "" (
arg_line=%argline% "%~1" 
goto :parse_args 
) 

अब आप सभी तर्क होगा लेकिन पहले %arg_line%

0

में संग्रहीत आप उपयोग करने की आवश्यकता SHIFT। यह पैरामीटर की स्पष्ट स्थिति को स्थानांतरित करता है, फिर %* स्थानांतरित होने वाली स्थिति से सभी पैरामीटर प्राप्त करेगा। SHIFT का उपयोग करने से पहले आपको पहले पैरामीटर प्राप्त करना चाहिए।

More informationSHIFT पर।

+3

यह गलत, 'SHIFT' केवल'% 0% 1 को प्रभावित करता है है,% 2 ...% 9' लेकिन '% *' – jeb

6
@ECHO OFF 
SETLOCAL 
SET allargs=%* 
IF NOT DEFINED allargs echo no args provided&GOTO :EOF 
SET arg1=%1 
CALL SET someargs=%%allargs:*%1=%% 
ECHO allargs %allargs% 
ECHO arg1  %arg1% 
ECHO someargs %someargs% 

यह कम से कम एक प्रमुख विभाजक के साथ SOMEARGS छोड़ देंगे (सेट होने पर इससे)

+0

अच्छा नहीं, लेकिन क्या आपका मतलब 'echo' (चौथी पंक्ति में) था? – user2033427

+0

@ user2033427 हाँ - तय। – Magoo

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