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
이유는 무엇입니까?
나는이 배치 파일이 : 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
이유는 무엇입니까?
지연 확장을 사용해야합니다. FOR 또는 IF 내부에서 변수는 명령 실행 전이 아닌 "확장"됩니다. (expanded = 변수가 해당 값으로 재 배열 됨)
변수의 값을 변경하고 동일한 루프에서 사용하려면 지연된 식을 사용해야합니다.
코드 시작 부분에 SETLOCAL ENABLEDELAYEDEXPANSION
으로 작성해야하며 확장해야하는 변수는 백분율 기호 대신 느낌표로 묶어야합니다.
그래서 echo %a%
는 변수 "A"가 아니라 "A"에서 n의 값에 영향을 미칠 이후 set a = %%n
이 유효하지 않습니다, 또한 echo !a!
편집
된다.
당신이 (등호의 시그 전에 빈 공간없이) set a=%%n
를 작성해야합니다
에코!! 그냥 표시! –
@SNash 세트가 잘못되었습니다. 그리워요. 이제 해결되었습니다. – Julien
a = %% n 이전의 공간 문제 –