본문 바로가기
목차
shell

batch 스크립트: showpath.bat

by ds31x 2026. 3. 16.
728x90
반응형

Windows의 cmd.exe 에서 동작을 기준으로 작성함.

 

환경 변수 중 PATH를 보기 좋게 출력하는 스크립트:

2023.06.20 - [개발환경] - [Env] Environment Variable (환경변수)

 

[Env] Environment Variable (환경변수)

정의Environment variable (환경변수) 란,OS나 SW에서 참조하는 변수들로OS나 SW가 동작 (or 실행)에 영향을 주는 값을 가짐.shell script 나 software들이 각 장비의 환경에 맞게 동작할 수 있도록 해 줌.종류Envr

ds31x.tistory.com


스크립트 코드

:: showpath.bat
@echo off
setlocal enabledelayedexpansion

echo [현재 시스템 PATH 우선순위 리스트]
echo --------------------------------------------------

:: PATH 변수의 세미콜론(;)을 줄바꿈으로 치환하여 출력.
set "current_path=%PATH%"
echo %current_path:;=&echo.%

echo --------------------------------------------------
pause

코드 라인별 상세 분석

1. @echo off

  • 역할: : 명령어가 실행될 때 화면에 명령어 자체(C:\>set...)를 출력하지 않도록 함(명령어 echo를 끔).
  • 효과: : 실행 결과(텍스트)만 깔끔하게 출력. 참고로, @는 이 명령어 줄조차도 표시하지 말라는 의미.

2. setlocal enabledelayedexpansion

  • 역할: : '지연된 환경 변수 확장'을 활성화 (enable dealyed expansion).
  • 이유: :
    • 일반적인 batch(배치) 파일은 루프나 조건문 안에서 변수 값이 바뀔 때 즉시 반영되지 않는 경우가 많음.
    • 이 선언을 하면 이후 ! 기호를 사용해 실시간으로 변하는 변수 값을 참조할 수 있음.
    • 사실 여기서는 단순 치환이라 필요하진 않으나, 일반적 스크립트 작성 시 필수적인 처리임.

3. chcp 65001

  • 역할: : 명령 프롬프트의 코드 페이지(Character Page)를 UTF-8로 변경(출력시 사용할 encoding 변경).
  • 이유: :
    • 이 후 출력에서 한글이 포함되어 있을 경우, 기본 모드(949)에서는 글자가 깨질 수 있음.
    • 이를 방지하기 위해 유니코드 모드로 전환하는 처리임.

4. echo \[현재 시스템 PATH 우선순위 리스트\]

  • 역할: : 화면에 단순히 안내 문구를 출력.

5. set "current\_path=%PATH%"

  • 역할: :
    • 시스템의 환경 변수인 %PATH% 값을
    • current_path라는 새로운 로컬 변수에 할당.
  • 팁: :
    • 변수 양옆에 큰따옴표(")를 사용하는 것은
    • path(경로)에 공백이나 특수문자가 있을 때 에러가 나는 것을 방지하는 코딩 방식.

6. echo %current_path:;=&echo.% (핵심 로직)

  • 역할: :
    • 변수 내의 문자를 치환하여 출력.
  • syntax: :
    • %변수명:A=B%는 "변수 안의 A를 B로 바꿔라"라는 뜻.
    • A (찾을 문자): : ; (세미콜론)
    • B (바꿀 문자): : &echo.

결과:

  • 세미콜론이 나올 때마다 &(명령어 연결 연산자)가 수행되고,
  • 그 뒤의 echo.(한 줄 띄우기 및 다음 내용 출력) 명령이 실행됨.
  • 결과적으로 세미콜론 자리에서 줄바꿈(개행, newline)이 일어나는 효과를 얻음.

2023.09.12 - [Linux] - [Linux] Pipe(|)와 다중 명령어 (;, &&, ||)

 

[Linux] Pipe(|)와 다중 명령어 (;, &&, ||)

| : PipePipe |는 2개의 processes를 연결해주는 연결 통로로서pipe 앞의 프로세스의 stdout(표준출력)이pipe 뒤의 프로세스의 stdin(표준입력)으로 쓰이도록 연결해주는 것임. 예를 들어 ls|sort|more의 경우 ls

ds31x.tistory.com

 

7. pause

  • 역할: :
    • "계속하려면 아무 키나 누르십시오..."라는 메시지를 띄우고
    • batch 스크립트를 일시 정지시킴.
  • 이유: :
    • 이게 없으면 스크립트가 실행 완료되자마자 CMD 창이 바로 닫혀버림.
    • 이 경우, 내용을 확인할 수 없음.

8. chcp 949

  • 역할: :
    • 코드 페이지를 다시 한국어 기본값(ANSI/EUC-KR/MS949)으로 복원.
  • 이유: :
    • 스크립트 종료 후에도 해당 창을 계속 쓸 경우,
    • 다른 작업과의 호환성을 위해 원래 환경으로 복구해 두는 처리임.

참고:

만약 이 결과를 텍스트 파일로 저장해서 보고 싶다면,

스크립트 실행 시 다음으로 실행할 것.

showpath.bat > path_list.txt

모든 리스트가 파일로 깔끔하게 저장됨.

 

2023.10.02 - [Linux] - [Bash] 입출력 목적지 변경하기 : Redirection Operation

 

[Bash] 입출력 목적지 변경하기 : Redirection Operation

Redirection 이란?stdout (표준출력, 1), sdtin(표준입력, 0), stderr(표준에러, 2)을 redirection하는 방법에 대한 문서서버에서 백그라운드로 명령어 수행시 출력이나 error 메시지 등을 stdout이 아닌 file에 남길

ds31x.tistory.com


같이 보면 좋은 자료들

https://blog.naver.com/dsaint31/224124358558

 

CE: Terminal 다루기 기초-File System과 환경변수

본 문서는 다음을 목표로 함: User Interface 의 이해: CLI vs. GUI Console, Terminal, Shell ...

blog.naver.com

2023.07.01 - [개발환경] - [Env] Windows 환경변수 (Environment Variable) 설정 (Windows 11)

 

[Env] Windows 환경변수 (Environment Variable) 설정 (Windows 11)

Windows 키를 누르면 나오는 panel에서 Settings을 클릭. 왼쪽 사이드 바에서 System이 선택된 상태에서 아래로 내리면 About이 나옴. 이를 클릭. System > About 패널에서 중간에 있는 Related links 에서 Advanced sy

ds31x.tistory.com


728x90