변수 'var'는 값을 표시하기 전에 소멸됩니까?FOR DO 명세서의 로컬 변수
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo %var%
)
변수 'var'는 값을 표시하기 전에 소멸됩니까?FOR DO 명세서의 로컬 변수
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo %var%
)
루프의 몸 구문 분석 할 때 %var%
에 대한 참조가 해결되기 때문에이 작동하지 않습니다.
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR /F "tokens=* delims= " %%G IN ('dir') DO (
SET VAR=%%G
ECHO !VAR!
)
ENDLOCAL
당신은 그것에 대해 모두 읽을 수를 입력 SET /?
하여 명령 행 ;-)
에서 당신은 지연 확장이 필요합니다 :
@setlocal enableextensions enabledelayedexpansion
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo !var!
)
endlocal
을 당신은 지연 변수 확장을 가능하게하고 대신
!var!
을 사용해야합니다
작동하지 않는 이유는 %var%
이 전체 명령이 구문 분석 될 때 평가되기 때문입니다. 명령은 전체 4 줄의 for
문입니다. 지연 확장을 사용하면 실제 echo
이 올바르게 실행되었을 때 !var!
의 평가를 지연합니다.