2011-02-15 84 views
2

我想從下面的地圖中使用我的循環中的鍵獲取值。但是我沒有得到理想的結果。當我使用for循環之外的相同代碼時,一切工作正常,取而代之!與%。爲什麼它不能在for循環中工作?批處理文件中的鍵值對

setlocal enabledelayedexpansion 
set map=Abc_Log-Abc;XYZ_Log-XYZ 

FOR /D /R %errfolderpath% %%K in (*Log*) DO (

SET folderName=%%~nK 

CALL SET folderName=%%map:*!folderName!-=%% 
echo !folderName! 

SET folderName=%folderName:;=&rem.% 
echo !folderName! 

) 

理想的第二回聲應該打印ABC和XYZ地方,因爲它是顯示;=

請幫助。

回答

1

問題在於,使用; = & rem的拆分技巧無法以此方式工作。

set folderName=%folderName:;&rem.% 
call set set folderName=%%folderName:;&rem.%% 

第一個失敗,因爲它在for循環開始之前展開。
第二行失敗,因爲在調用擴展中,根本不允許&符(管道等)。

但是這一個應該做的工作

@echo off 
setlocal enabledelayedexpansion 
set map=Abc_Log-abc;XYZ_Log-xyz 

FOR %%K in ("Abc_Log" "XYZ_Log") DO (
    echo(
    echo ----- 

    SET folderName=%%~nK 
    echo entry =!folderName! 

    SET folderName=!map:*%%~nK-=! 
    echo fn =!folderName! 

    for /F "delims=;" %%a in ("!folderName!") do SET folderName=%%a 
    echo result=!folderName! 
) 
+0

就像一個魅力。非常感謝您的幫助和即時響應 – Sahil 2011-02-15 14:11:02