DevOps

Windows shell 변수에서 특정 문자를 가진 문자열을 치환 하는 방법

IT오이시이 2024. 9. 20. 00:02
728x90

 

 

Windows shell script 변수에서 특정 문자를 가진  문자열을 치환 하는 방법

 

* windows bat 파일을 작성하면서 특정 변수의 값이 중복되거나 삭제가 필요한 경우를 위해서 작성해 봅니다.

특히 PATH 변수에서 특정 변수를 치환하고자 할 경우 유용하게 사용되었습니다.

 

*  첨부파일을 여러개의  node, jdk 등을 설치하고 필요한 버전별로 에디터 툴을 작동하는 방법을 찾다가 만든 방법입니다.  ( 시스템 보안망에서  인터넷이 되지 않는 경우 nvm이 작동하지 않는데 이런 경우  유용하게 쓰일 듯 합니다.)

 

 

Windows 명령 프롬프트에서 특정 경로 문자열을 제거하고 시스템 PATH 변수를 재설정하는 방법은 다음과 같습니다. 이 작업을 수행하기 위해 SETX 명령어를 사용하여 시스템 환경 변수를 수정할 수 있습니다.

예시 배치 파일

아래는 특정 경로를 PATH에서 제거하고 이를 다시 설정하는 배치 파일의 예입니다. 이 예시에서는 C:\NodeJs\node-v16를 PATH에서 제거합니다.

bat  코드 
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

REM 제거할 경로 설정
SET REMOVE_PATH=C:\NodeJs\node-v16

REM 현재 PATH를 가져오기
SET CURRENT_PATH=%PATH%

REM 제거할 경로가 포함된 경우
SET NEW_PATH=!CURRENT_PATH:%REMOVE_PATH%=!
SET NEW_PATH=!NEW_PATH:;;=!

REM 새 PATH를 시스템 변수로 설정
SETX PATH "!NEW_PATH!"

echo PATH가 성공적으로 업데이트되었습니다.
echo 새로운 PATH: !NEW_PATH!

ENDLOCAL
pause
 

설명

  1. SETLOCAL ENABLEDELAYEDEXPANSION: 이 명령어는 변수를 업데이트한 후에 사용할 수 있게 해줍니다.
  2. SET REMOVE_PATH: 제거할 경로를 변수에 설정합니다.
  3. SET CURRENT_PATH=%PATH%: 현재 시스템 PATH 변수를 가져옵니다.
  4. SET NEW_PATH=!CURRENT_PATH:%REMOVE_PATH%=!: 지정된 경로를 제거한 새로운 PATH 변수를 생성합니다.
  5. SETX PATH "!NEW_PATH!": 새로운 PATH 값을 시스템 환경 변수로 설정합니다.
  6. echo 명령어: 변경된 PATH 값을 출력합니다.

사용 방법

  1. 위 코드를 텍스트 파일에 붙여넣고 .bat 확장자로 저장합니다 (예: update-path.bat).
  2. 배치 파일을 관리자 권한으로 실행해야 합니다. (우클릭 -> "관리자 권한으로 실행").
  3. 작업이 완료되면 PATH 변수가 업데이트된 것을 확인할 수 있습니다.

주의사항

  • SETX는 변경 사항을 영구적으로 저장합니다. 변경 전에 기존 PATH 값을 백업하는 것이 좋습니다.
  • 명령 프롬프트 창을 새로 열어야 변경된 PATH를 반영합니다.
728x90
반응형