ETLOCAL, ENDLOCAL
setlocal 및 endlocal은 환경 변수를 지역화하는 데 사용되는 명령입니다. setlocal 명령을 사용하면 일괄 처리 파일 내에서만 환경 변수를 변경할 수 있으며, endlocal 명령을 사용하면 변경된 환경 변수를 원래 상태로 복원합니다.
setlocal
<환경변수설정>
endlocal
SETLOCAL, ENDLOCAL 명령어의 기본 사용법입니다.
@echo off
echo setlocal 사용 전, a 변수 정의
set a=1
echo.
echo setlocal 실행
setlocal
echo.
echo setlocal 사용 후, b 변수 정의
set b=2
echo.
echo 변수 a 출력
echo a = %a%
echo 변수 b 출력
echo b = %b%
echo.
echo endlocal 실행
endlocal
echo.
echo endlocal 사용 후, 변수 a, b
echo 변수 a 출력
echo a = %a%
echo 변수 b 출력
echo b = %b%
echo.
pause
결과
setlocal 사용 전, a 변수 정의
setlocal 실행
setlocal 사용 후, b 변수 정의
변수 a 출력
a = 1
변수 b 출력
b = 2
endlocal 실행
endlocal 사용 후, 변수 a, b
변수 a 출력
a = 1
변수 b 출력
b =
계속하려면 아무 키나 누르십시오 . . .
- endlocal 실행 변수 a, b 출력한 것을 보게 되면 변수 a의 값은 출력되지만 변수 b의 값은 출력이 되지 않는다.
- setlocal ~ endlocal 사이에 생성된 변수가 지역화되었기 때문에 endlocal 이후에는 변수 b가 원래상태로 복원된 것입니다.
다른 배치파일에서 지역화된 변수를 가져올 수 있는지 확인해 보겠습니다.
파일명과 상관없이 같은 폴더에 3개의. bat 파일을 만들어 줍니다.
check_setlocal_1.bat
@echo off
set a=1
- check_setlocal_1.bat에는 지역화(setocal~endlocal)를 하지 않고, a의 변수가 있습니다.
check_setlocal_2.bat
@echo off
setlocal
set b=2
endlocal
- check_setlocal_2.bat에는 지역화(setocal~endlocal) 사이의 b의 변수가 있습니다.
check_setlocal.bat
@echo off
call check_setlocal_1.bat
call check_setlocal_2.bat
echo 변수 a 출력
echo a = %a%
echo 변수 b 출력
echo b = %b%
pause
결과
변수 a 출력
a = 1
변수 b 출력
b =
계속하려면 아무 키나 누르십시오 . . .
역시나 변수 b는 지역화를 선언했으므로, 값이 넘어오지 않은 것을 볼 수 있습니다.
setlocal ~ endlocal은 여러 배치파일을 연속해서 실행해야 할 때 많이 사용된다. 배치파일 내에서 다른 사람이 만들었거나 다른 목적으로 만들어진 배치파일을 호출할 때, 서로의 파일에 영향을 끼치지 않도록 하기 위한 목적이다
@echo off 다음 줄에 setlocal 입력하는 것을 권장합니다.