![](/img/trans.png)
[英]Array of file names inside a for loop with delayed expansion (windows batch file)
[英]Windows Batch File Expansion Variables
我有一個批處理文件問題。 基本上,我想在for循環中以1向前搜索,並使用該值引用該位置的參數,然后將其分配給一個變量,以便以后使用,請參見下面的代碼示例。
示例:設置myVar =%1 + 1
其中%1是參數名稱,而%2是參數值。
::Batch file sample
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set count=0
set HasParam=0
set ParamValue="null"
set paramValPos=0
for %%i in (%*) do (
set /a count=!count!+1
if /i "%%i"=="MyParam" (
set /a HasParam=1
set /a paramValPos=!count!+1
::The next line is where I Need Help, it's currently incorrect!
set ParamValue=%!paramValPos!
)
)
if %HasParam%==1 (
echo "Parameter Value: %ParamValue%"
)
pause
從命令行示例調用:
現在我知道可以在pos 2上訪問它了,例如:
::Sample batch file
@echo off
echo "Param Name: %1"
echo "Param Value: %2"
pause
但是,這不是我想要的,因為有更多的參數,有些是可選的,它們也可以按任何順序傳遞。
謝謝你的協助。
call set "ParamValue=%%!paramValPos!"
如果我正確理解了您的請求,則需要在給定參數之后的下一個參數 。 下面的批處理代碼可以做到這一點:
@echo off
set "HasParam="
set "ParamValue="
for %%i in (%*) do (
if defined HasParam (
if not defined ParamValue (
set ParamValue=%%i
)
) else if /i "%%i"=="MyParam" (
set HasParam=yes
)
)
if defined HasParam (
echo "Parameter Value: %ParamValue%"
)
pause
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.