खोज…


कमांड लाइन तर्क बैच फ़ाइलों के लिए आपूर्ति की

बैच फ़ाइल कमांड लाइन तर्क बैच शुरू करते समय प्रस्तुत किए गए पैरामीटर मान हैं। यदि वे रिक्त स्थान रखते हैं तो उन्हें उद्धरण में संलग्न किया जाना चाहिए। एक रनिंग बैच फ़ाइल में, तर्कों का उपयोग विभिन्न उद्देश्यों के लिए किया जाता है, अर्थात :labels , :labels , चर सेट करना, या कमांड चलाना।

तर्कों को बैच फ़ाइल में %1, %2, ..., %9 का उपयोग करके संदर्भित किया जाता है।

@echo off
setlocal EnableDelayedExpansion
if not "%1"=="" (
    set "dir=%~1" & set "file=%~2"
    type !dir!\!file! | find /n /i "True" >nul^
     && echo Success! || echo Failure
)
exit /b

C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"
Success!

टिप्पणियाँ:

  • उपरोक्त उदाहरण में, तर्क संशोधक %~1 का उपयोग करके दोहरे उद्धरण हटा दिए जाते हैं।
  • ^ का उपयोग करके लंबी तारों को कई लाइनों में विभाजित किया जाता है, और अगली पंक्ति पर चरित्र से पहले एक स्थान होता है।

9 से अधिक तर्कों के साथ बैच फ़ाइलें

जब 9 से अधिक तर्कों की आपूर्ति की जाती है, तो shift [/n] कमांड का उपयोग किया जा सकता है, जहां /n मतलब nth तर्क से शुरू होता है, n शून्य और आठ के बीच होता है।

तर्कों के माध्यम से लूपिंग:

:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args

ध्यान दें, उपरोक्त उदाहरण में विलंबित विस्तार चर i का उपयोग तर्क मान को चर सरणी में असाइन करने के लिए किया जाता है। call कमांड लूप के अंदर ऐसे वैरिएबल वैल्यू को प्रदर्शित करने की अनुमति देता है।

गिनती के तर्क:

for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%

चर को n'th तर्क पर सेट करें:

set i=5
call set "path%i%=%%~i"

कोष्ठक के अंदर तर्कों को बदलना

निम्नलिखित example.bat को प्राप्त करें। तर्क और इसे 1 , 2 और 3 साथ कॉल करें:

@echo off

(
    shift
    shift
    echo %1
)

एंड ब्रैकेट्स के संदर्भ में परिवर्तन के बाद वेरिएबल एक्सपैंशन बदल जाएगा क्योंकि आउटपुट होगा:

1

जब आप कॉल का उपयोग करने के लिए आवश्यक तर्क को एक्सेस करने के लिए ब्रैकेट के अंदर शिफ्ट करते समय यह एक समस्या हो सकती है:

@echo off

(
    shift
    shift
    call echo %%1
) 

अब आउटपुट 3 होगा। चूंकि CALL कमांड का उपयोग किया जाता है (जो अतिरिक्त चर विस्तार की ओर ले जाएगा) इस तकनीक के साथ एक्सेस करने वाले तर्क भी पैराट्राइज्ड हो सकते हैं:

@echo off

set argument=1

    shift
    shift
    call echo %%%argument%

विलंबित विस्तार के साथ:

@echo off
setlocal enableDelayedExpansion
set argument=1

    shift
    shift
    call echo %%!argument!

आउटपुट होगा

3



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow