2013-07-18 120 views
1

我想要兩種類型的列表 第一個列表中包含例如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 

這段代碼的問題是,它並沒有奏效。

OUTPUT:

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

並與出謝勝利,其:

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

我任何人都可以解釋我爲什麼多數民衆贊成是一個語法錯誤,爲什麼我可以複製從Tagets%的內容! %N!變成其他變量?

回答

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

+0

非常感謝。 對於路徑與空格此meens: 'code' SET 「TagetsRelease =」 C:\的Hello World \ test23.txt 「 」C:\的Hello World \ test24.txt「」 或者是有什麼錯? – Heinrich

+0

你可以使用'set「file = C:\ hello world \ test.txt」' – Endoro