batch-file
कार्य
खोज…
टिप्पणियों
आप लेबल में <parameter>
जोड़कर फ़ंक्शन में शुरुआती चर जोड़ सकते हैं। इन शुरुआती वेरिएबल को %n
साथ एक्सेस किया जा सकता है जहां n शुरुआती वेरिएबल नंबर है ( %1
पहले के लिए, %2
दूसरे के लिए। यह %n
तरीका% 1 -% 9 के लिए काम करता है। पैरामीटर 10 - 255 के लिए, आपको आवश्यकता होगी। Shift कमांड का उपयोग करने के लिए)।
उदाहरण के लिए:
:function <var1> <var2>
एक बार जब आप call :function param1 param2
उपयोग करते call :function param1 param2
, param1
%1
साथ पहुँचा जा सकता है, और %2
साथ param2
।
नोट: <parameter>
कड़ाई से आवश्यक नहीं है, लेकिन यह पठनीयता के साथ मदद करता है।
एक स्वच्छ चाल है कि उपयोगी होता है जब कई चर के बारे में उड़ान का उपयोग है setlocal
और endlocal
के साथ मिलकर %n
। setlocal
और endlocal
अनिवार्य रूप से कार्य करना यह कमांड प्रॉम्प्ट, यह में सेट चर केवल रुक जबकि यह फ्रेम में है की अपनी अलग उदाहरण है।
आप उपयोग कर रहे हैं setlocal
और endlocal
, और तुम लौट रहे हैं वैश्विक मूल्यों इस का उपयोग करें।
endlocal & set var=variable
यह वैश्विक मूल्य सेट var
के लिए variable
। आप एक साथ कई चर के लिए इनकी श्रृंखला बना सकते हैं।
endlocal & set var=variable & set var2=variable number 2
इस सेट वैश्विक चर var
को variable
और वैश्विक मूल्य var2
को variable number 2
।
चूंकि कोड ब्लॉक में कोड भी एक साथ किए जाते हैं, आप ऐसा भी कर सकते हैं।
if "%var%"=="" (
endlocal
set %~2=10
)
लेकिन, आप ऐसा नहीं कर सकते ।
if "%var%"=="" (
set %~2=10
endlocal
)
सरल कार्य
call :FunctionX
rem More code...
:FunctionX
rem Some code here.
goto :eof
यह एक बहुत ही सरल कार्य है। फ़ंक्शंस इन-प्रोग्राम कमांड हैं जो एक बार में कई कमांड करते हैं। कार्य कोई लेबल बनाना और उस में कोड डाल द्वारा बनाई गई हैं, और एक बार यह किया है, तो आप एक जोड़ने goto :eof
या exit /b <ErrorlevelYou'dLike>
जो जहां यह लागू किया गया था लौटती है। फ़ंक्शन call :functionname adparams
साथ call :functionname adparams
किया जाता है call :functionname adparams
।
पैरामीटर के साथ फ़ंक्शन
call :tohex 14 result
rem More code...
:tohex <innum> <outvar>
set dec=%1
set outvar=%~2
rem %n and %~n are functionally identical, but %~n is slightly safer.
goto :eof
यह call
से अतिरिक्त पैरामीटर लेता है जैसे कि फ़ंक्शन एक अलग बैच फ़ाइल थी।
नोट: <parameter>
आवश्यक नहीं है, लेकिन यह पठनीयता के साथ मदद करता है।
सेट्लोकल और एंडलोक का उपयोग करना
set var1=123456789
set var2=abcdef
call :specialvars
echo %var1%, %var2%
rem More code...
:specialvars
setlocal
set var1=987654321
set var2=fedcba
endlocal
goto :eof
जब अंदर अनुभाग setlocal
, endlocal
अनुभाग, चर, फोन करने वाले का चर से अलग हैं, इसलिए क्यों% var1% और% var2% परिवर्तित नहीं किया गया।
उन सभी को मिलाकर
set importantvar=importantstuff
call :stuff 123 var1
rem More code...
:stuff <arg1> <arg2>
setlocal
set importantvar=%~1
echo Writing some stuff into %~2!
endlocal
set %~2=some stuff
setlocal
set importantvar=junk
endlocal
goto :eof
इस बुनियादी समारोह, का इस्तेमाल करता setlocal
और endlocal
और तर्क एक अजीब छोटे समारोह बनाने के लिए।
बेनामी फ़ंक्शंस बैच फ़ाइलों में
बेनामी फ़ंक्शंस तकनीक इस तथ्य का उपयोग करती है कि CALL
कमांड आंतरिक रूप से GOTO
का उपयोग करती है जब सबरूटीन को बुलाया जाता है और चर डबल विस्तार के साथ मदद संदेश मुद्रण का दुरुपयोग करता है:
@echo off
setlocal
set "anonymous=/?"
call :%%anonymous%% a b c 3>&1 >nul
if "%0" == ":%anonymous%" (
echo(
echo Anonymous call:
echo %%1=%1 %%2=%2 %%3=%3
exit /b 0
)>&3
आप केवल एक अनाम फ़ंक्शन को कॉल कर सकते हैं यदि इसे CALL
बाद परिभाषित किया गया है (या ब्रैकेट्स के संदर्भ के बाद यदि CALL
ब्रैकेट के भीतर निष्पादित हुआ है)। इसे बाहरी स्क्रिप्ट से नहीं बुलाया जा सकता है, लेकिन यह सामान्य फ़ंक्शन कॉल की तुलना में धीमी है।
दूसरे बैच फ़ाइल से कॉलिंग फ़ंक्शन
लायब्रेरी में निम्न नाम की फ़ाइल है। cmd :
@echo off
echo -/-/- Batch Functions Library -/-/-
:function1
echo argument1 - %1
goto :eof
केवल निष्पादित करने के लिए : बाकी फ़ाइल के कोड के बिना फ़ंक्शन 1 आपको एक लेबल लगाना चाहिए : फोन करने वाले के बल्ले में फ़ंक्शन 1 और इसे इस तरह उपयोग करें:
@echo off
call :function1 ###
exit /b %errorlevel%
:function1
library.bat %*
आउटपुट होगा ( library.cmd
में फ़ंक्शन के बाहर का कोड। library.cmd
निष्पादित नहीं किया गया है):
तर्क १ - ###
अधिक जानकारी के लिए इसे देखें ।