2011-02-15 8 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

문제는 split-trick이; & 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

관련 문제