2012-09-20 3 views
7

컴파일 할 plsql을 포함하는 폴더 이름을 얻기 위해 배치 스크립트를 실행하려고합니다.루프 용 배치 스크립트는 변수를 설정하지 않습니다.

for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
    set FOLDER=%%a 
    echo *** PROCESSING FOLDER %FOLDER% *** 
) 

이 에코 * 가공 FOLDER * 내가 그렇게

을 확인 너무 먼 길을 지출 한 후 사실 확신 변수가 설정되지 않습니다 것처럼

, ...내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

힌트 : 'ENABLEDELAYEDEXPANSION' 검색 – adarshr

+2

이 동일한 문제를 다루는 많은 기존 질문이 많이 있으며 모두 비슷한 대답을 가지고 있습니다. 응답은 도움말 시스템에서 찾을 수 있습니다 - 명령 행에서'HELP FOR' 또는'FOR /? '를 입력하십시오. 힌트 - 지연된 확장에 대한 설명을 찾으십시오. – dbenham

+0

@dbenham - :-) 당신은 죽었어! 이 유형의 질문마다 단 1 센트를 얻는다면 ... – jeb

답변

23

이것은 본질적으로 question asked earlier today입니다. 여기에 내 질문에 대한 대답이 있습니다 ...

배치 파일의 경우 EnableDelayedExpansion 옵션을보고 싶습니다. 앞의 링크에서 :

지연된 변수 확장은 FOR 루프를 사용하여 작업 할 때 유용합니다. 일반적으로 전체 FOR 루프는 배치 스크립트의 여러 행에 걸쳐 있더라도 단일 명령으로 평가됩니다.

그래서 스크립트는 다음과 같이 뭔가를 찾고 끝낼 것 : 대안으로

@echo off 
setlocal enabledelayedexpansion 

for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
    set FOLDER=%%a 
    echo *** PROCESSING FOLDER !FOLDER! *** 
) 

을, 단지보다는 새 변수를 만드는 대신 내면의 루프에서 %%a 변수를 사용합니다.

+0

고마워요 조나! 나는 이것이 효과가 있다고 생각한다. 내가 enabledelayedexpansion ...을 사용하는 나의 첫 번째 시도에서 에코를하지 않았다. 내가 값을 되 돌리는 것을 시도하고 있었기 때문에 그것이 설정되어 있는지를보기 위해, 우리가 달리는 원들! –

+0

도와 드리겠습니다! 그것이 도움이된다면 대답을 받아 들인 것으로 표시하는 것을 잊지 마십시오. 그러면이 질문에 대한 미래의 방문자가 귀하의 경험을 활용할 수 있습니다. –

+0

할 것입니다. 다시 한번 감사드립니다. –

관련 문제