답변:
var2가 설정되었지만 echo %var2%
블록이 실행되기 전에 줄 확장이 발생합니다.
현재 var2
비어 있습니다.
따라서 delayedExpansion 구문이 존재하고 !
대신 사용하며 %
구문 분석 시간이 아닌 실행 시간에 평가됩니다.
을 (를) 사용 !
하려면 추가 설명 setlocal EnableDelayedExpansion
이 필요합니다.
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
&
및 &&
연산자에 대한 동일한 규칙 입니다. 이 코드를 set x=some & set y=%x%thing & echo results %y%
출력한다 %x%thing
.
나는 파티에 조금 늦었지만이 조건을 처리하는 또 다른 방법은 if
이와 같이 외부 에서 프로세스를 계속하는 것입니다.
set var1=true
if "%var1%"=="true" (
set var2=myvalue
)
echo %var2%
또는 goto
구문 사용
set var1=true
if "%var1%"=="true" (
set var2=myvalue
goto line10
) else (
goto line20
)
. . . . .
:line10
echo %var2%
. . . . .
:line20
이렇게하면 확장이 "제 시간에"발생하며 setlocal EnableDelayedExpansion
. 결론적으로, 스크립트 디자인을 다시 생각한다면 그렇게 할 수 있습니다.
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause
.. 작동하고 있습니다. "프로그램의 어느 곳에서나 액세스 할 수있는 배치 파일에 변수를 만들 경우." . aticleworld.com/batch-file-variables-and-scope