노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.


FOR 명령을 이용하여 파일 구조 분석이나 변수를 대체하여 사용할 수 있습니다. 이것을 이용하면 직접적으로 접근하기 힘든 것을 환경 변수를 조작할 수 있습니다.

읽기에 앞서

  • 명령어 구문에서 { | }(브레이스와 바, 중괄호와 막대)로 이루어진 부분은 둘 가운데 하나를 선택해야 한다. 예컨대 {%% | %}와 같은 경우 %%와 % 가운데 하나를 선택하여 사용해야 함을 뜻한다.
  • [](대괄호)로 묶인 부분은 그 부분을 쓰지 않아도 무방함을 나타낸다. 필요할 때만 쓰면 된다.

변수 대체

변수 대체란 말 그대로 입력 받은 변수를 다른 형태로 바꾼다는 뜻이다. 이 변수 대체를 이용하면 몇 가지 조작을 할 수 있다.

변수 대체 기본 사용법

  • %~L
    따옴표("")를 제거하는 %L을 확장합니다. 경로 명 등에 쓰인 따옴표를 제거할 때도 쓸 수 있습니다.
  • %~fL
    전체 경로 이름으로 %L을 확장합니다. 아래 그림에서 집합에는 *.txt 를 넣었으며, 경로는 포함하지 않았음에도 %~fL은 그것을 전체 경로로 확장해 주고 있다.

    위 그림의 내용은 C 드라이브 루트디렉터리에 txt 확장자를 가진 파일이 존재하면 그 파일의 전체 경로를 매개변수로 삼아 dir 명령을 실행하라는 뜻이다.
  • %~dL
    드라이브 문자 전용으로 %L을 확장합니다. 다시 말해 집합에 들어 있는 *.txt를 그것이 존재하는 드라이브명과 콜론(: 쌍점)만 취해서 나타내 준다.
  • %~pL
    경로 전용으로 %L을 확장합니다. %~fL에서 %~dL를 뺀 나머지를 돌려준다. 다시 말해 %~fL에서 맨 앞의 드라이브 문자와 콜론(: 쌍점)을 뺀 나머지를 돌려준다.
  • %~nL
    파일 이름 전용으로 %L을 확장합니다. 기본적으로 집합에 입력한 값과 같은 파일이 존재할 때 그 파일명만 읽어올 때 사용합니다. 이것은 어떤 파일이 존재하는지를 알아보고, 그것과 이름이 같으나 확장자가 다른 파일이 있는지를 알고 싶을 때 사용한다.
  • %~xL
    파일 확장명 전용 %L을 확장합니다. 기본적으로 집합에 입력한 값과 같은 파일이 존재할 때 그 확장자만 읽어올 때 사용합니다. 확장자를 읽어올 때 점(. 콤마)를 함께 읽어옵니다.
  • %~sL
    짧은 이름만 포함하도록 경로를 확장합니다. 이것은 도스에서 사용하는 짧은 경로명으로 파일 이름을 나타내 줍니다.
  • %~aL
    파일의 파일 특성으로 %L을 확장합니다. 다시 말해 파일 속성만을 나타내 주며, 이때 윈도의 형식이 아닌 유닉스 형식에 따라 나타내 준다는 점이 특이합니다.
  • %~tL
    파일의 날짜/시간으로 %L을 확장합니다. 이때 날짜는 date /t 의 형식을 따르며, 시간은 time /t 의 형식을 따릅니다.
  • %~zL
    파일 크기로 %L을 확장합니다.
  • %~$PATH:L
    PATH 환경 변수 목록에 나열된 디렉터리를 검색하고 처음으로 찾은 디렉터리의 전체 이름으로 %L을 확장합니다. 환경 변수 이름이 정의되어 있지 않거나 검색으로 파일을 찾을 수 없으면 이 수정자는 빈 문자열로 확장됩니다.

    C 드라이브 루트디렉터리는 PATH 환경 변수에 지정되어 있지 않으므로 %L 환경변수에 대한 %~$PATH:L 환경변수는 공백을 돌려준다.

    C:\WINDOWS 디렉터리는 PATH 환경변수에 지정되어 있으므로 %~$PATH:L 환경변수 확장이 알맞은 값으로 대체하여 보여줍니다.

변수 대체 복합 사용법

FOR 명령 확장에서 변수 대체를 하나만 쓸 수도 있지만 여러 개를 복합하여 사용할 수도 있습니다.

  • %~dpL
    드라이브 문자 및 경로 전용으로 %L을 확장합니다.
  • %~nxL
    파일 이름 및 확장명 전용으로 %L을 확장합니다.
  • %~fsL
    이름이 짧은 전체 경로 이름 전용으로 %L을 확장합니다.
  • %~dp$PATH:L
    %L에서 PATH 환경 변수의 디렉터리 목록에 나열된 디렉터리를 검색하고 처음으로 찾은 드라이브 문자와 경로로 확장합니다.
  • %~ftzaL
    dir과 같은 출력 줄로 %L을 확장합니다.

위의 예제에서 %L과 PATH는 다른 유효한 값으로 바꿀 수 있습니다. 유효한 for 변수 이름은 %~ syntax를 종료합니다. %L 같은 대문자 변수 이름을 사용하면 코드를 더 읽기 쉽게 만들고 대소문자를 구분하지 않는 수정자와 혼동을 피할 수 있습니다.

응용 예시

Slave 님께서 질문을 하나 올려주셨습니다.

  1. for %f in (*.txt) do run %f > %f.result

위와 같이 하면 파일명은 항상 파일이름.txt.result라고 나타난다네요. 이것을 파일이름.result라고 바꾸고 싶다고 하셨습니다. 참고로 윈도에서 사용한다면 파일이름.txt.result라고 하는 쪽이 여러모로 좋지만, 파일이름.result를 더 좋게 여기는 사람도 많습니다. 이 부분은 사람마다 취향의 차이이므로 자기가 바라는 대로 출력하고자 하지요.

이 문제는 %~nL 항목을 응용하면 쉽게 바꿀 수 있습니다.

  1. FOR %F IN (*.txt) DO run %F > %~nF.result

배치파일에서 사용한다면 아래와 같이 하면 됩니다.

  1. FOR %%F IN (*.txt) DO run %%F > %%~nF.result

다음 예고

FOR 명령에서 파일 구문 분석에 대해 알아보겠습니다.

이 글은 스프링노트에서 작성되었습니다.


'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령 확장 1  (2) 2009.06.17
FOR 명령  (6) 2009.05.16
GOTO 명령  (3) 2009.05.05
IF 명령 확장  (1) 2009.04.22
IF 문자열  (4) 2009.04.18
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

알리는 말

11월 18일 수정

본문의 내용이 저작권을 침해할 우려가 있다는 모꼬모지 님의 의견이 있었습니다. 처음에는 본문에 해당하는 한국어 번역이 없다고 여겼으나, 모꼬모지 님이 이미 번역한 부분이 있었고, 저는 그것을 모르는 상태에서 본문을 작성하였습니다. 그에 따라 번역문이 낱말은 물론 토씨까지 일치하는 곳을 상당 부분 발견하였고, 그러한 부분을 대부분 삭제하였으며, 꼭 필요한 일부는 남겼습니다(예컨대 PROCESSOR_ 로 시작하는 환경변수).

그로 말미암아 설명이 삭제된 부분이 생겼는데, 일부는 영어 위키백과Environment variable에서 내용을 복사하여 붙였습니다. 제 블로그의 라이선스가 GFDL이고 위키백과도 GFDL이기 때문에 가능했습니다. 영문 그대로 둔 이유는 번역할 경우 그 결과물이 이미 번역된 다른 글과 같을 수 있다는 염려 때문입니다. 한국어 위키백과에 내용이 추가되기 전까지는 본문의 영어 부분을 한국어로 번역하지 않을 생각입니다.

그와 함께 변수 구분을 위해 하위 개요를 두어 표를 두 개로 분리하였습니다.

11월 19일 수정

모꼬모지 님께 먼저 죄송하다는 말을 드려야겠네요.

죄송합니다.

위키백과의 사랑방에서 과거에 있었던 여러 토론을 살펴본 결과 링크만 걸려 있으면 그다지 문제가 없다는 의견을 여럿 보게 되었습니다. 결국 제가 너무 까탈스럽게 굴었다는 말이네요.
너무 원칙만 고수하다 보니 본의 아니게 모꼬모지 님과 논쟁을 벌이게 되어습니다. 앞으로는 좀 더 시야를 넓혀 이번과 같은 일이 다시 일어나지 않도록 하겠습니다.

말뜻

환경 변수(環境 變數)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.[각주:1] 이때 변수들은 명령줄 위에서, .BAT 확장자를 가지는 일괄 처리 파일, 또는 스크립트 안에서 쓰일 수 있다. 변수 이름 주변이나 앞에 특별한 기호(예 : %)를 놓아서 참조하는 것이 보통이다.

윈도 테크넷의 정의에 따르면,[각주:2] Cmd.exe 명령 셸 환경은 명령 셸 및 운영 체제의 동작을 결정하는 변수에서 정의한다. 시스템과 로컬, 이 두 가지 환경 변수를 사용하여 명령 셸 환경 또는 전체 운영 체제 환경의 동작을 정의할 수 있다. 시스템 환경 변수는 전체 운영 체제 환경의 동작을 정의하며, 로컬 환경 변수는 현재 Cmd.exe 인스턴스의 환경 동작을 정의한다.

시스템 환경 변수는 운영 체제에 미리 설정되어 Windows XP의 모든 프로세스에서 사용할 수 있다. 관리 권한이 있는 사용자만 시스템 변수를 변경할 수 있으며, 이 변수는 로그온 스크립트에서 가장 많이 사용한다. 로컬 환경 변수는 그 변수를 사용하도록 만든 사용자가 컴퓨터에 로그온한 경우에만 사용할 수 있다. 로컬 변수는 HKEY_CURRENT_USER 하이브에서 설정하고 현재 사용자인 경우에만 유효하지만 전체 운영 체제 환경의 동작을 정의합니다.

윈도 환경에서 환경 변수의 유형은 다음과 같습니다.

  1. 기본 제공 시스템 변수
  2. HKEY_LOCAL_MACHINE 하이브에 있는 시스템 변수
  3. HKEY_CURRENT_USER 하이브에 있는 로컬 변수
  4. 모든 환경 변수 및 Autoexec.bat 파일에서 설정된 경로
  5. 모든 환경 변수 및 로그온 스크립트에서 설정된 경로
  6. 스크립트 또는 배치 파일과 상호 작용하는 변수

윈도의 환경 변수

윈도의 기본 환경 변수는 다음과 같다.[각주:3] 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다.

시스템 변수

여기에서 말하는 시스템 변수는 기본 제공 시스템 변수와 레지스트리에 저장된 시스템 변수를 편의상 통틀어 이르는 명칭이다.

윈도의 기본 환경 변수는 다음과 같다.[각주:4]

변수 설명
%CMDEXTVERSION%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT4 - 1
  • 윈도2000 및 윈도XP - 2
%COMPUTERNAME% 컴퓨터 이름을 반환합니다. 정확하게는 현재 컴퓨터의 NetBOIS 이름을 반환한다.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도2000 이후 기본값 - 현재 컴퓨터의 컴퓨터 이름
%ComSpec% This variable contains the full path to the command processor; on Windows NT based operating systems this is cmd.exe, while on Windows 9x and ME it is the DOS command processor, COMMAND.COM.
  • 윈도9X 기본값 - C:\WINDOWS\COMMAND.COM
  • 윈도NT 기본값 - %SystemRoot%\system32\cmd.exe
  • 윈도NT 표시값 -
    • NT4 - C:\WINNT\system32\cmd.exe
    • 윈도2000 이후 - C:\WINDOWS\system32\cmd.exe
%DATE%

This variable expands to the current date. The date is displayed according to the current user's date format preferences.

The following is a way of reformatting the date and time for use in file copies. The example assumes UK format of day month year and the time is set for a 24 hour clock.

  • 기본값 - 시스템의 날짜. 한글 윈도에서는 YYYY-MM-DD(윈도ME/2000 이후) 또는 YY-MM-DD(윈도95/98)의 형태로 나타내 준다.
  • 표시값 - (한글 윈도XP) 2009-05-03
%ERRORLEVEL%

This variable points to the current error level. If there was an error in the previous command, this is what you need to check against to find out about that.
이 환경변수는 SET 명령으로는 볼 수 없습니다.

%HOMEDRIVE%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - C:
%HOMEPATH%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - \Documents and Settings\{USERNAME}
  • 비스타 기본값 - \Users\{USERNAME}
%HOMESHARE% 사용자 공유 홈 디렉터리의 네트워크 경로를 반환합니다. 홈 디렉터리의 값에 따라 설정합니다. 사용자 홈 디렉터리는 로컬 사용자와 그룹에서 지정하며, 홈 디렉터리가 로컬 경로에 위치하면, 이 환경변수의 값은 공백(NULL)을 반환합니다. 윈도XP에서만 정의하고 있습니다.
%NUMBER_OF_PROCESSORS% 컴퓨터에 설치된 프로세서의 수를 지정합니다. 이것은 컴퓨터 하드웨어인 CPU 모듈의 갯수 또는 CPU 모듈과 CPU 코어의 곱의 계산값으로 나타납니다. 예컨대 단일 코어의 CPU 모듈이 1개라면 1 x 1 = 1을 반환합니다. 그러나 듀얼 코어 CPU가 4개라면 2 x 4 = 8을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%OS%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - Windows_NT
%Os2LibPath% OS/2 라이브러리의 경로를 반환한다. 윈도NT4 및 윈도2000 에서만 정의되어 있다.
%PATH% This variable contains a semicolon-delimited (do not put spaces in between) list of directories in which the command interpreter will search for an executable file that matches the given command. Equivalent to the Unix $PATH variable.
  • 윈도9X 기본값 - C:\WINDOWS;C:\WINDOWS\COMMAND
  • 윈도NT 기본값 - %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
  • 윈도NT 표시값 - C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
%PATHEXT% 운영 체제에서 실행 가능하다고 간주되는 파일 확장명 목록을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도XP 기본값 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
  • 비스타 기본값 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH;.MSC
%PROCESSOR_ARCHITECTURE% 프로세서의 칩 아키텍처를 반환합니다. 값은 다음과 같습니다. x86, IA64 등.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_IDENTIFIER% 프로세서의 설명을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_LEVEL% 컴퓨터에 설치된 프로세서의 모델 번호를 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%PROCESSOR_REVISION% 프로세서의 수정 버전 번호를 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
%Public%
  • 비스타 기본값 - C:\Users\Public
%RANDOM% This variable returns a random number between 0 and 32767. Cmd.exe에서 생성합니다.
  • 윈도9X 및 윈도NT4 기본값 - 정의되지 않음.
%SystemDrive% The %SystemDrive% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the drive upon which the system folder was placed. Also see next item.

The value of %SystemDrive% is in most cases C:.

  • 윈도9X 계열 - 정의되지 않음
  • 윈도NT 기본값 - C:
%SystemRoot%

The %SystemRoot% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the location of the system folder, including the drive and path.

The drive is the same as %SystemDrive% and the default path on a clean installation depends upon the version of the operating system. By default, on a clean installation:

  • 윈도9X 계열 - 정의되지 않음
  • 윈도NT 계열 기본값 -
    • Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS
    • Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT
    • Windows NT 3.5x uses \WINNT35
%TEMP%
%TMP%
시스템 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
  • 윈도9X 계열 기본값 - C:\WINDOWS\TEMP
  • 윈도NT 계열 시스템 기본값 - %SystemRoot%\TEMP
  • 윈도NT 계열 시스템 표시값 -
    • NT4 및 윈도2000 - C:\WINNT\TEMP
    • 윈도XP 이후 - C:\WINDOWS\TEMP
%TIME% This variable points to the current time. The time is displayed according to the current user's time format preferences.
  • 기본값 - 시스템의 날짜. 한글 윈도에서는 오전/오후 hh-mm의 형태로 나타내 준다.
  • 표시값 - (한글 윈도XP) 오후 03:36
%windir% This variable points to the Windows directory (on Windows NT-based operating systems it is identical to the %SystemRoot% variable, above). If the System is on drive C: then the default values are:
  • 윈도9X 계열 기본값 - C:\WINDOWS
  • 윈도NT 계열 기본값 - %SystemRoot%
  • 윈도NT 계열 표시값
    • NT4 및 윈도2000 - C:\WINNT
    • NT4 Terminal Server Edition - C:\WTSRV
    • 윈도XP 이후 - C:\WINDOWS
%winbootdir% 윈도9X 계열 운영체제가 설치된 위치를 반환합니다.
  • 윈도9X 및 윈도2000 기본값 - C:\WINDOWS

로컬 변수

변수 설명
%ALLUSERSPROFILE% The %AllUsersProfile% variable expands to the full path to the All Users profile directory. This profile contains resources and settings that are used by all system accounts. Shortcut links copied to the All Users' Start menu or Desktop folders will appear in every user's Start menu or Desktop, respectively.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도 2000 이후 기본값 - C:\Documents and Settings\All Users
  • 비스타 기본값 - C:\ProgramData
%APPDATA% Contains the full path to the Application Data folder of the logged-in user. Does not work on Windows NT 4.0 SP6 UK.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
  • 윈도 2000 이후 기본값 - %USERSPROFILE%\Application Data
  • 윈도 2000 이후 표시값 - C:\Documents and Settings\{USERNAME}\Application Data
  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Roaming
%CD% This variable points to the current directory. Equivalent to the output of the command cd when called without arguments.
  • 윈도9X 및 NT4 기본값 - 정의되지 않음
%CLIENTNAME% 로그인 환경이 로컬인지 원격인지에 따른 문자열을 반환합니다.
  • 윈도2000 이전 기본값 - 정의되지 않음
  • 윈도XP 이후 기본값 - 로컬이면 Console을 반환
%CMDCMDLINE% 현재 Cmd.exe를 시작하는 데 사용되는 정확한 명령줄을 반환합니다.
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - 일반적으로 %ComSpec% 환경변수의 값을 반환한다.
%LOCALAPPDATA%

로컬 사용자만을 위해 설치된 응용 프로그램이 기본적으로 데이터를 저장하는 위치를 반환합니다.

  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Local
%LOGONSERVER%
  • 윈도9X 기본값 - 정의되지 않음
  • 윈도NT 기본값 - \\%COMPUTERNAME%
  • 윈도NT 표시값 - \\{사용자가 쓰고 있는 컴퓨터 이름}
%ProgramData%
  • 비스타 기본값 - C:\ProgramData
%PROMPT%
  • 기본값 - $P$G
%TEMP%
%TMP%
현재 로그온한 사용자가 사용할 수 있는 응용 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 어떤 프로그램에는 TEMP가 필요하고 어떤 프로그램은 TMP가 필요합니다.
  • 윈도9X 계열 기본값 - C:\WINDOWS\TEMP
  • 윈도NT 계열 로컬 기본값 - %USERPROFILE%\Local Settings\Temp
  • 윈도NT 계열 로컬 표시값 - C:\DOCUME~1\{USERNAME}\LOCALS~1\Temp
  • 비스타 기본값 - C:\Users\{USERNAME}\AppData\Local\Temp (%LOCALAPPDATA%\Temp 라고 추정)
%USERDOMAIN%

사용자 계정을 포함한 도메인 이름을 반환합니다.

The variable holds the name of the Workgroup or Windows Domain to which the current user belongs. The related variable, %LOGONSERVER%, holds the hostname of the server that authenticated the current user's logon credentials (name and password). For Home PCs, and PCs in a Workgroup, the authenticating server is usually the PC itself. For PCs in a Windows Domain, the authenticating server is a domain controller (a primary domain controller, or PDC, in Windows NT 4-based domains).

  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - %COMPUTERNAME%
  • 윈도NT 계열 표시값 - 현재 사용하는 컴퓨터 이름을 나타내 준다.
%USERNAME% 현재 로그온한 사용자 이름을 반환합니다.
  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - {USERNAME} (로그인한 사용자 이름)
%USERPROFILE%

The %UserProfile% variable is a special system-wide environment variable found on Microsoft Windows NT and its derivatives. Its value is the location of the current user's profile directory, in which is found that user's HKCU registry hive (NTUSER).

Users can also use the %USERNAME% variable to determine the active users login identification.

  • 윈도9X 계열 기본값 - 정의되지 않음
  • 윈도NT 계열 기본값 - C:\Documents and Settings\{USERNAME}
  • 비스타 기본값 - C:\Users\{USERNAME}
변수 설명

%ProgramFiles%

%ProgramFiles(x86)%

%ProgramW6432%

This variable points to Program Files directory, which stores all the installed program of Windows and others. The default on English-language systems is C:\Program Files. In 64-bit editions of Windows (XP, 2003, Vista), there are also %ProgramFiles(x86)% which defaults to C:\Program Files (x86) and %ProgramW6432% which defaults to C:\Program Files. The %ProgramFiles% itself depends on whether the process requesting the environment variable is itself 32-bit or 64-bit (this is caused by Windows-on-Windows 64-bit redirection).

  • 윈도9X 계열 - 정의되지 않음.
  • 윈도NT 계열 기본값 - C:\Program Files
%CommonProgramFiles%

This variable points to Common Files directory. The default is C:\Program Files\Common Files.

  • 윈도9X 계열 및 NT4 - 정의되지 않음.
  • 윈도2000 이후 기본값 - C:\Program Files\Common Files
%SessionName% 윈도2000 이후 버전에서 터미널 서비스 시스템 구성요소(Terminal Services system component)가 설치된 경우에만 정의된다. 로컬에서 로그인했을 때는 Console을 기본값으로 반환한다.

위의 표 세 가지를 읽을 때 다음과 같은 점에 주의하십시오.

  • 혹시라도 명령줄에서 set 명령으로 찾을 수 없는 환경 변수는 윈도 레지스트리 키(Windows Registry key)인 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 에서 찾을 수 있다. 몇몇 로컬 변수는 HKEY_CURRENT_USER\Environment 에서 찾을 수 있다.
  • 기본값과 표시값은 서로 같지 않다. 기본값은 레지스트리 등에서 정의하는 값이고, 표시값은 명령 프롬프트에서 SET 명령으로 확인할 수 있는 값이다. 윈도NT 계열(윈도NT/2000/XP 등)에서는 서로 다른 값을 가지므로 주의해야 한다(결과적으로 둘 다 같다). 위의 설명에서는 윈도XP를 기준으로 기본값과 표시값을 나누었으며, 두 값이 같다면 기본값만 표시했다.
  • 위의 환경변수 설명에서 {USERNAME}, {사용자가 쓰고 있는 컴퓨터 이름}이라는 부분은 시스템 환경에 따라 달라진다. 각자 자신의 컴퓨터에서 확인하기 바란다. 참고로 {USERNAME}의 값은 환경변수 %USERNAME%의 값에 따라 달라지며, {사용자가 쓰고 있는 컴퓨터 이름}%COMPUTERNAME%에 따라 달라진다.
  • 비스타 기본값은 표시값과 구분하지 않았다. 실제로 비스타를 설치하지 않은 이상 알 수 없기 때문이다.
  • Environment Variables 문서에서는 %SystemDirectory%라는 환경변수를 소개하고 있지만, 어디에서도 찾을 수 없었다.

도스의 환경 변수

MS-DOS v6.22를 설치했을 때의 환경 변수는 그다지 많지 않다. COMPSPEC, PROMPT, PATH, TEMP, 이렇게 네 개가 전부이다(참고 : 환경 변수 1).

참조 문서

내부 문서

외부 문서

다음 예고

GOTO 문과 레이블에 대해서 알아보기로 하자.

  1. 한국어 위키백과 : 환경 변수 [본문으로]
  2. 명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서를 참조하였다. [본문으로]
  3. 명령 셸 개요 :: Cmd.exe와 함께 환경 변수 사용 문서, Environment Variables 문서, Windows Platform Comparison Environment Variable Reference 문서, Windows Vista- Environment variables 문서 등을 참조하였다. [본문으로]
  4. 변수명에는 퍼센트 기호(%)를 붙이지 않지만, 배치파일에서 사용한다고 가정하여 퍼센트 기호(%)를 붙인 상태로 표시하였다. [본문으로]

'스크립트' 카테고리의 다른 글

환경 변수 1  (0) 2009.05.02
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.
환경 변수가 무엇인지는 환경 변수 2에서 설명하기로 하고, 여기에서는 주의할 점을 몇 가지 설명하겠다.

도스와 윈도는 다르다.

환경 변수를 이용할 때 도스와 윈도가 다르며, 윈도9X 계열과 윈도XP의 경우가 다르다.

  • 도스에서 환경 변수의 이름은 항상 대문자이다. 윈도에서는 환경 변수의 이름에 소문자도 허용된다. 그러나 윈도에서 소문자 이름으로 된 환경변수를 대문자로 써도 똑같다. 반대로 대문자 이름으로 된 환경변수를 소문자로 써도 된다.
  • 도스에서 일부 환경변수의 값은 항상 대문자이다. 윈도에서는 모든 환경변수의 값에 소문자를 포함할 수 있다.
  • 정의되지 않은 환경 변수에 대한 처리 방법이 다르다. 도스와 윈도9X 계열에서는 정의되지 않은 환경변수는 공백으로 처리하지만, 윈도XP에서는 환경변수 이름을 돌려준다.
  • 도스에서는 환경변수가 숫자로만 이루어져도 문자열이지만, 윈도에서는 명령확장을 이용하여 수로 인식할 수 있다. 심지어 사칙연산도 가능하다.
  • 도스에서는 환경변수의 값에 ^(캐럿; 이스케이프 문자)와 &(앰프; 엔티티 부호) 등을 아무런 작업없이 바로 쓸 수 있다. 윈도XP에서는 따옴표(" ")를 사용하는 등 특별한 방법으로써 환경변수의 값에 쓸 수 있다. 다시 말해 윈도XP에서는 좀 더 복잡한 방법을 사용해야 한다. 도스에서는 환경변수의 값에 <(보다 작은; Less than), >(보다 큰; Greater than), |(bar; pipe)와 같은 세 가지 특수문자를 쓸 수 없다. 윈도XP에서는 앞서 말한 특별한 방법으로써 환경변수의 값에 쓸 수 있다.

도스의 환경변수

MS-DOS v6.22를 설치했을 때의 환경 변수는 그다지 많지 않다. COMPSPEC, PROMPT, PATH, TEMP, 이렇게 네 개가 전부이다.

COMPSPEC=C:\COMMAND.COM
PROMPT=$p$g
PATH=C:\DOS
TEMP=C:\DOS

참조 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


'스크립트' 카테고리의 다른 글

환경 변수 2  (9) 2009.05.03
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함