배치 파일에서 변수값을 수정할 때, !와 %는 서로 다른 변수 확장 구문을 나타냅니다.
% 변수 확장:
% 기호는 기본적인 변수 확장 구문입니다.
%변수명% 형식으로 사용하며, % 기호로 둘러싸인 변수명을 통해 변수의 값을 참조할 수 있습니다.
변수 확장은 배치 파일에서 값을 읽을 때 사용되며, 배치 파일이 실행되는 동안 변수 값이 변경되더라도 최신 값을 반영하지 않습니다.
! 지연된 변수 확장:
! 기호는 지연된 변수 확장 구문입니다.
!변수명! 형식으로 사용하며, ! 기호로 둘러싸인 변수명을 통해 변수의 값을 참조할 수 있습니다.
지연된 변수 확장은 활성화된 enabledelayedexpansion 모드에서 사용됩니다.
지연된 변수 확장을 사용하면 변수 값을 읽을 때마다 최신 값을 반영합니다. 변수 값이 변경되었을 때 동적으로 값을 업데이트합니다.
예를 들어, 다음과 같은 배치 파일 코드가 있다고 가정해봅시다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@echo off
setlocal enabledelayedexpansion
set myVar=Hello World
echo %myVar% REM 출력: Hello World
echo !myVar! REM 출력: Hello World
set myVar=New Value
echo %myVar% REM 출력: New Value
echo !myVar! REM 출력: New Value
pause
|
cs |
위의 코드에서 myVar 변수의 값을 %와 !로 각각 참조하고 있습니다. echo %myVar%는 변수의 초기값인 Hello World를 출력하고, echo !myVar!도 동일하게 출력합니다. 그러나 set myVar=New Value를 통해 변수의 값을 변경한 후에는 %myVar%는 업데이트되지 않고 이전 값인 Hello World를 출력하지만, !myVar!는 지연된 변수 확장을 사용하여 동적으로 값이 업데이트되어 New Value를 출력합니다.
따라서, 변수 값을 수정하고 최신 값을 참조하려면 ! 지연된 변수 확장을 사용해야 합니다. % 변수 확장은 변수 값을 읽을 때만 사용됩니다.
'기타 공부 기록 > 배치파일' 카테고리의 다른 글
노트패드 줄바꿈변경 (1) | 2024.10.01 |
---|---|
배치파일 인자 (0) | 2023.05.31 |
배치파일 if 문에서 다중 조건 쓰기 (0) | 2023.05.30 |