CMD – SETLOCAL , ENDLOCAL 설명

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 입력하는 것을 권장합니다.

Leave a Comment