动态为批量设置

时间:2013-07-18 15:09:34

标签: list dynamic for-loop batch-file cmd

我想要两种类型的列表 第一个列表包含例如daily和release的类型,第二个类型包含第一个列表的路径。 之后我想动态地根据第一个类型列表浏览第二个类型列表。

类似的东西:

@ECHO OFF

REM ##########
REM ## Test ##
REM ##########

SETLOCAL EnableDelayedExpansion

SET VersionType=(Daily Release)
SET TagetsDaily=(path1 path2)
SET TagetsRelease=(path23 path24)


FOR %%n IN %VersionType% DO (
    ECHO !Tagets%%n!
    SET test_temp=!Tagets%%n!
    ECHO %test_temp%

    FOR %%i !Tagets%%n! DO (
        ECHO %%i
    )
)

PAUSE
EXIT

此代码的问题在于它无效。

输出:

"!Tagets%n!" can be syntactically processed at this point.

并且没有了它的:

(path1 path2)
ECHO is off (OFF).
(path23 path24)
ECHO is off (OFF).

我可以解释一下为什么那是一个语法错误,为什么我可以复制内容!Tagets %% n!进入另一个变量??

1 个答案:

答案 0 :(得分:2)

试试这个:

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET "VersionType=Daily Release"
SET "TagetsDaily=path1 path2"
SET "TagetsRelease=path23 path24"

FOR %%n IN (%VersionType%) DO (
     ECHO !Tagets%%n!
     SET test_temp=!Tagets%%n!
     ECHO !test_temp!

     FOR %%i IN (!Tagets%%n!) DO (
          ECHO %%i
     )
)

请查看for /?delayed expansion