ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CMD] setlocal & endlocal
    Program's/CMD 2023. 7. 6. 15:03
    반응형

     

    안녕하세요. 아야87입니다.

     

    CMD 명령어 중 setlocal, endlocal에 대해 알아보겠습니다.


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

     

    반응형

    댓글

Designed by Tistory.