이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

OS/Windows

batch script - FOR문 내부에서 SET 처리 하는 방법

이쿠우우 2022. 4. 7. 20:49
반응형
 

FOR문 내부에서 SET 처리 하는 방법

 

 

ERROR 상황

 
[test.log 파일의 내용]
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
<virtualDirectory path="/" physicalPath="C:\test" />
 
[test에 사용한 batch script]
set var="test"
for /f "tokens=*" %%a in ('type test.log') DO(
set var=%%a
echo %var%
)

위와 같은 script를 실행하면 
var 변수 %%a 값이 저장되어
echo 시 %%a 값이 출력되길 원함
하지만 결과는 
초기에 설정한 test 값이 출력됨.

 

해결책

SETLOCAL ENABLEDELAYEDEXPANSION 를 사용하면 됨
 
[test에 사용한 batch script]
SETLOCAL ENABLEDELAYEDEXPANSION
set var="test"
for /f "tokens=*" %%a in ('type test.log') DO(
set var=%%a
echo !var!
)
for문 내부에서 설정한 변수는 "!변수명!" 형식으로 사용해야함.
 
 
[결과]
정상적으로 이동됨.

반응형