변수가 포함된 변수를 즉시 처리하는 것이 아니라 요청 시에만 처리가 가능한지 알고 싶습니다. 예를 들어 다음 배치는 다음과 같습니다.
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=!VA! people
set VA=Three
ECHO !VAR!
"두 사람"을 인쇄합니다. "세 사람"을 출력하도록 에코가 있는 마지막 부분에서만 구문 분석을 수행할 수 있습니까?
답변1
그것은 불가능할 것입니다. 변수에 값이 할당되면 할당 시 사용된 변수나 텍스트에 더 이상 종속되지 않습니다.
원하는 출력을 얻는 가장 쉬운 방법은 VA 변수와 끝에 텍스트를 간단히 에코하는 것입니다. 기본적으로 모든 계산을 수행한 다음 마지막에 출력을 합칩니다.
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
답변2
마지막에 VAR을 다시 설정하면 됩니다. 변수를 설정할 수 있는 빈도에는 제한이 없습니다.
배치 파일은 명령 프롬프트에 입력할 수 있는 명령 목록일 뿐이라는 점을 기억하십시오. 모든 행은 기본적으로 시간순으로 실행되는 한 번에 하나의 명령입니다.
따라서 올바른 조건으로 VAR을 높여야 하는 경우 그 순간 직전에 설정하십시오. 예:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=%VA% people
echo %VAR%
set VA=Three
::We want to update VAR, so lets set it again:
set VAR=%VA% people
echo %VAR%
pause
:: 배치 파일의 경우 REM과 동일합니다.