2014-02-11 142 views
0


我遇到了批處理文件的問題。基本上,我想通過for循環尋找1,並使用該值來引用該位置上的參數,然後將其分配給一個變量,稍後可以使用該變量,請參閱下面的代碼示例。Windows批處理文件擴展變量

示例:set 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 

實施例從呼叫命令行: prog.bat MyParam = 5
現在我知道我可以在pos 2訪問它,如:

::Sample batch file 
@echo off 
echo "Param Name: %1" 
echo "Param Value: %2" 
pause 

然而,這不是我想要什麼,因爲有更多的參數,有些是可選的,他們也可以以任何順序傳入。

感謝您的協助。

回答

0
call set "ParamValue=%%!paramValPos!" 
+0

謝謝你的工作很好。 – add

0

如果我理解您的要求正確,你想給定一個之後的下一個參數。批處理代碼如下所示:

@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 
+0

太好了,這也適用。非常感謝。 – add