kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Programming

배치 파일 실행 시 선언한 변수 자동으로 지우기

까마기 2020. 10. 26. 15:13
728x90
반응형

 

- 배치 파일을 종료하더라도 배치 파일 안에서 정의한 변수들은, 자동으로 지워지지 않고, 환경 변수에 계속 남아 있습니다. 지저분하기도 하고 위험할 수도 있습니다. 그래서 배치 파일 안에서 변수들을 직접 지워주어야 한다. 그런데 사용한 변수들의 개수가 많다면 이 작업이 번거로우며, 이 때문에 변수들을 자동으로 지우는 방법을 알아본다.

 

변수를 정의하는 부분 앞에, setlocal 문을 넎음으로써 해결할 수 있다.

 

 

@echo off

 

set local

 

set TEST=foo

 

echo %TEST%

 

 

위와 같이 하면 배치파일을 종료할 때 %TEST% 라는 변수가 자동으로 사라진다.

그러나 변수를 정의하는 부분 뒤에 놓으면 그 변수는 자동으로 지워지지 않는다. setlocal은 자신의 뒤에 있는 문장들에게만 적용된다.

 

 

  • 변수 중복 방지하기 : 이것은 배치 파일 안에서, 기존의 PATH라는 환경변수를 재정의해서 사용하는 것을 예로 든 예제.

 

 

@echo off

 

set local

 

set PATH=D:\games

 

echo %PATH%

 

이 배치 파일 내에서만 PATH는 D:\games이고, 배치 파일 밖의 PATH는 C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem 이며, 이렇게 여전히 원래의 값이다. 그리고 배치 파일을 종료하더라도, PATH의 값은 변함이 없다. 이것은 setlocal문의 작용

 

 

 

 

 

http://mwultong.blogspot.com/2006/08/setlocal-endlocal.html

 

 

반응형