Windows批处理:对于变量内变量的块

时间:2015-03-04 10:06:10

标签: windows variables batch-file for-loop delayedvariableexpansion

我想创建一个变量Variable,这意味着我想用变量名称创建许多变量,例如Var 1 ,Var 2 ,Var 3 ,Var 4 。这有效(见下文),但由于ECHO - 循环中的单一处理我必须使用EnableDelayedExpansionFOR无法正常工作,!var%num%!未被正确解释

所以这就是我所拥有的:

SetLocal EnableDelayedExpansion

SET /a num = 0
FOR /F "tokens=*" %%a IN ('dir /b *.bat') DO (
    SET /a num = num + 1
    SET var!num!=%%a
    CALL ECHO No. !num!^: %%var!num!%%
    )

EndLocal DisableDelayedExpansion

下班后,现在可以使用CALL - 回声

前面的例程

我向你们提出的问题是如何制作

    CALL ECHO No. !num!^: %%var!num!%%
好一点。我第一次尝试了

    ECHO No. !Num!^: !var%num%!

但是因为单个FOR - 循环失败了。有没有机会比CALLING更好?

提前谢谢你 帕特里克

1 个答案:

答案 0 :(得分:1)

SetLocal EnableDelayedExpansion

SET /a "num=0"

FOR /F "delims=" %%a IN ('dir /b *.bat') DO (
    SET /a "num+=1"
    SET "var!num!=%%a"
    FOR %%b in (!num!) do ECHO No. !num!: !var%%b!
)

EndLocal