반응형
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문 내부에서 설정한 변수는 "!변수명!" 형식으로 사용해야함.
[결과]
정상적으로 이동됨.
반응형
'OS > Windows' 카테고리의 다른 글
batch script - Symbolic link 파일, 바로가기(Short cut) 파일 찾기 (0) | 2022.04.07 |
---|---|
batch script - 특정 경로 폴더의 하위 목록 확인 (0) | 2022.04.07 |
batch script - for문 문자열 추출 (tokens, delims) (1) | 2022.04.07 |
batch script - START와 CALL의 차이점 (0) | 2022.04.07 |
batch script - 환경변수 문자열 안의 환경변수가 있는 경우 처리하는 방법 (0) | 2022.04.07 |