반응형
작동하지 않는 경우 Windows 배치 SET 내부
이 스크립트를 실행하는 경우(.bat 파일에서):
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo %var2%
)
항상 받는 것은:
ECHO is on.
즉,var2
변수가 실제로 설정되지 않았습니다.누가 왜 그런지 이해할 수 있게 도와줄 수 있나요?
var2가 설정되었지만 라인의 확장echo %var2%
블록이 실행되기 전에 발생합니다.
이 시간에var2
비어 있습니다.
따라서 delayedExpansion 구문이 존재하며 다음을 사용합니다.!
대신에%
구문 분석 시간이 아닌 실행 시간에 평가됩니다.
다음을 사용하기 위해 참고하십시오.!
추가 진술setlocal EnableDelayedExpansion
필요합니다.
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
파티에 조금 늦었지만 이 상황을 처리하는 또 다른 방법은 외부에서 계속 진행하는 것입니다.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
중요한 것은 스크립트의 설계를 다시 생각해본다면 그렇게 할 수 있다는 것입니다.
언급URL : https://stackoverflow.com/questions/9102422/windows-batch-set-inside-if-not-working
반응형
'source' 카테고리의 다른 글
Eclipse에서 스페이스 바 키 누름이 자동 완성을 트리거하지 않도록 합니다. (0) | 2023.05.22 |
---|---|
COUNT 집계에 "0"/"0" 결과를 포함시키는 방법은 무엇입니까? (0) | 2023.05.22 |
문자열 작성기에서 문자 제거 (0) | 2023.05.22 |
jQuery의 SELECT 요소에서 특정 옵션을 어떻게 선택합니까? (0) | 2023.05.22 |
Reactjs에서 Excel 파일을 읽는 중 (0) | 2023.05.22 |