배치 스크립트에서 문자열의 변수를 즉시 처리하지 않음

배치 스크립트에서 문자열의 변수를 즉시 처리하지 않음

변수가 포함된 변수를 즉시 처리하는 것이 아니라 요청 시에만 처리가 가능한지 알고 싶습니다. 예를 들어 다음 배치는 다음과 같습니다.

 @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과 동일합니다.

관련 정보