2013-08-29 29 views
0

我需要延迟扩展的内部延迟扩展,即水木清华这样的:内推迟了一个批处理脚本扩展(窗口)

!PARAMS[!BEFORE_LAST!]! 

当然,以上是无效的,所以我试图要解决它与for循环,但没有成功:

SETLOCAL EnableExtensions EnableDelayedExpansion 

SET PARAM_COUNT=0 
FOR %%P IN (%*) DO (
    SET /A PARAM_COUNT+=1 
    SET PARAMS[!PARAM_COUNT!]=%%P 

    IF !PARAM_COUNT! GTR 1 (
     SET /A BEFORE_LAST = !PARAM_COUNT!-1 
     FOR /L %%G IN (!BEFORE_LAST!) DO SET BEFORE_LAST_PARAM=!PARAMS[%%G]! 
     IF "!BEFORE_LAST_PARAM!"=="--buildroot" (
      REM perfrom some actions here 
     ) 
    ) 
) 
ENDLOCAL 

我怎么能达到解释的行为?

回答

1

delayed expansiondelayed expansion不起作用,试试这个:

CALL SET "myvar=%%PARAMS[!BEFORE_LAST!]%%" 
+0

嘿Endoro。最终它震动了。首先%% PARAMS与我的循环变量%% P混淆。但后来我重命名了我的循环变量,它变得更好了。 – Alec