2013-09-05 5 views
0

나는이 배치 파일이 : 10 : 우리는이 %%n가 제대로 표시 실행하면 1,2,3, ... 10배치 파일 예기치 않은 동작이

그러나 a 항상 표시

for /L %%n in (1,1,10) do (

set a = %%n 
echo %%n 
echo %a% 
) 

를 10 , 10,10, ..., 10

이유는 무엇입니까?

답변

2

지연 확장을 사용해야합니다. FOR 또는 IF 내부에서 변수는 명령 실행 전이 아닌 "확장"됩니다. (expanded = 변수가 해당 값으로 재 배열 됨)

변수의 값을 변경하고 동일한 루프에서 사용하려면 지연된 식을 사용해야합니다.

코드 시작 부분에 SETLOCAL ENABLEDELAYEDEXPANSION으로 작성해야하며 확장해야하는 변수는 백분율 기호 대신 느낌표로 묶어야합니다.

그래서 echo %a%는 변수 "A"가 아니라 "A"에서 n의 값에 영향을 미칠 이후 set a = %%n이 유효하지 않습니다, 또한 echo !a!

편집

된다.

당신이 (등호의 시그 전에 빈 공간없이) set a=%%n를 작성해야합니다

+0

에코!! 그냥 표시! –

+0

@SNash 세트가 잘못되었습니다. 그리워요. 이제 해결되었습니다. – Julien

+0

a = %% n 이전의 공간 문제 –