2014-02-11 4 views
0


배치 파일에 문제가 있습니다. 기본적으로 for 루프에서 1을 찾아 그 값에서 해당 위치의 매개 변수를 참조한 다음 나중에 사용할 수있는 변수에이 값을 할당하고 싶습니다. 아래 코드 샘플을 참조하십시오.Windows 배치 파일 확장 변수

예 : myVar에 설정 % = 1 + 1 % 1 PARAM 명이며, 2 % PARAM 값 것이다
. 명령 줄에서

::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