是否可以在批處理檔案中傳遞多個帶有值的引數?
下面是命令列的樣子:
> example.bat /L:10 /D:30 /R:15
并且希望能夠以任何順序傳入引數并將它們的值放入特定的變數中,如下所示:
set "loop=10"
set "delay=30"
set "retry=15"
我現在正在使用這個:
set "loop=%1"
set "delay=%2"
set "retry=%3"
但問題是,如果沒有傳遞任何引數,那么它就不起作用,如果沒有給出任何引數,我想使用默認值。
uj5u.com熱心網友回復:
我認為絕對沒有必要定義變數loop, delay, and retry,當您可以非常輕松地使用與您的輸入 ( L, D, and R) 匹配的變數名,或者可能更好的是,前綴;像varL,varD和varR.
例子:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Rem Ensure that there are no existing variables named with var prefixes
For /F "Delims==" %%G In ('"(Set var) 2>NUL"') Do Set "%%G="
Rem Define your defaults below
Set /A "varD=3,varL=10,varR=5"
Rem Define new variable values from input arguments
For %%G In ("%*") Do For %%H In (%%~G) Do (Set "_=%%~H"
SetLocal EnableDelayedExpansion
For /F "Tokens=1,* Delims=:" %%I In ("!_:~1,1!=!_:~3!") Do (EndLocal
Set "var%%I"))
Rem The below lines are included just to show you the defined variables
Set var
Pause
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526349.html
標籤:批处理文件论据默认参数
