簡體   English   中英

Windows批處理文件擴展變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM