시스템 환경변수 사용하기

04 3, 2008 10:29

%HomeDrive% - 로그인한 계정의 정보가 들어있는 드라이브
%HomePath% - 로그인한 계정의 폴더
%SystemDrive% - 윈도우가 부팅된 드라이브
%SystemRoot% - 부팅된 운영체제가 들어있는 폴더
%ProgramFiles% - 기본 프로그램 설치 폴더
%TEMP%, %TMP% - 임시 파일이 저장되는 폴더
%ComSpec% - 기본 명령 프롬프트 프로그램
%USERDOMAIN% - 로그인한 시스템의 도메인 명
%USERNAME% - 로그인한 계정 이름
%USERPROFILE% - 로그인한 유저의 프로필이 들어있는 폴더명
%ALLUSERPROFILE% - 모든 사용자 프로필이 저장된 폴더
%APPDATA% - 설치된 프로그램의 필요 데이터가 저장된 폴더
%LOGONSERVER% - 로그인한 계정이 접속한 서버명
%Path% - 실행 참조용 폴더 지정 목록
%PathEXT% - 참조용 폴더에서 검색한 파일들의 확장자 목록
%MyDocs%




2.

환경 변수 설정

환경 변수는 드라이브, 경로 또는 파일 이름 등의 정보를 포함하는 문자열입니다. 환경 변수는 다양한 프로그램의 동작을 제어합니다. 예를 들어 TEMP 환경 변수는 프로그램에서 임시 파일을 저장하는 위치를 지정합니다.

사용자는 사용자 환경 변수를 추가, 수정 또는 제거할 수 있습니다. 그러나 시스템 환경 변수는 관리자만 추가, 수정 또는 제거할 수 있습니다.

제어판에 있는 시스템을 사용하면 아래의 변수를 사용자 지정할 수 있습니다.

logged_on_user_name의 사용자 환경 변수

사용자 환경 변수는 특정 컴퓨터의 각 사용자마다 다릅니다. 변수에는 프로그램 파일의 위치에 대한 경로 등 프로그램에서 정의하는 변수 뿐 아니라 사용자가 설정하는 변수도 포함됩니다.

시스템 환경 변수

관리자는 시스템에 적용함으로써 시스템의 모든 사용자에게 적용되는 환경 변수를 변경하거나 추가할 수 있습니다. Windows 설치 프로그램이 설치 중에 프로세서의 수 및 임시 디렉터리의 위치 등 기본 시스템 변수를 구성합니다.

주의

악의적인 사용자가 해당 디렉터리에 트로이 목마 또는 다른 악의적인 프로그램을 배치할 수 있으므로 디렉터리가 안전하지 않을 경우 Path 시스템 변수에 디렉터리를 추가하지 마십시오. Windows에서 이러한 프로그램이 실행되면 중요한 데이터가 손상되거나 손실될 수 있으며 부분적이거나 총체적인 시스템 장애가 발생할 수 있습니다.


자세한 정보: http://www.microsoft.com/korea/technet/security/guidance/secmod65.asp

경로 규칙

경로 규칙은 프로그램에 대한 폴더 또는 정규화된 경로를 지정합니다. 경로 규칙이 폴더를 지정하면 폴더에 포함된 프로그램 또는 관련된 하위 폴더에 포함된 프로그램을 나타냅니다. 경로 규칙은 로컬 경로와 UNC 경로를 모두 지원합니다.

관리자는 경로 규칙에 특정 응용 프로그램을 실행하기 위한 디렉터리를 모두 정의해야 합니다. 예를 들어 관리자가 바탕 화면에 응용 프로그램을 실행하기 위한 바로 가기를 만든 경우 사용자는 응용 프로그램 실행을 위해 경로 규칙에서 실행 파일과 바로 가기 경로 모두에 액세스할 수 있어야 합니다. 둘 중 하나만 사용하여 응용 프로그램을 실행하려고 하면 소프트웨어 제한 경고가 나타납니다.

많은 응용 프로그램에서는 %ProgramFiles% 변수를 사용하여 Windows XP Professional이 실행되는 컴퓨터의 하드 드라이브에 파일을 설치합니다. 이 변수가 다른 드라이브의 다른 디렉터리로 설정되어도 일부 응용 프로그램에서는 여전히 해당 파일을 원래의 C:\Program Files 하위 디렉터리에 설치합니다. 따라서 경로 규칙을 기본 디렉터리 위치로 정의된 상태로 두는 것이 가장 좋습니다.

경로 규칙에서 환경 변수 사용

환경 변수를 사용하도록 경로 규칙을 정의할 수 있습니다. 경로 규칙은 클라이언트 환경에서 평가되므로 관리자는 환경 변수를 사용하여 특정 사용자 환경에 맞게 규칙을 조정할 수 있습니다. 다음의 두 예에서는 경로 규칙에 환경 변수를 적용하는 경우를 보여 줍니다.

"%UserProfile%"은 C:\Documents and Settings\User 및 그 하위 폴더를 모두 나타냅니다.

"%ProgramFiles%\Application"은 C:\Program Files\Application 및 그 하위 폴더를 모두 나타냅니다.

참고: 환경 변수는 ACL(액세스 제어 목록)에 의해 보호되지 않습니다. 환경 변수에는 UserSystem의 두 가지 유형이 있습니다. 명령 프롬프트를 시작할 수 있으면 누구나 Users 환경 변수를 다른 경로를 다시 정의할 수 있습니다. System 환경 변수는 Administrators 그룹의 사용자만 변경할 수 있습니다.

표 1은 Windows XP Professional에 포함된 기본 환경 변수의 목록입니다.

표 1. Windows XP Professional의 기본 환경 변수

변수 이름 설명

ALLUSERSPROFILE

모든 사용자 프로필 위치를 반환하는 로컬 변수입니다.

APPDATA

응용 프로그램이 기본적으로 데이터를 저장하는 위치를 반환하는 로컬 변수입니다.

CD

현재 디렉터리 문자열을 반환하는 로컬 변수입니다.

CMDCMDLINE

현재 Cmd.exe 프로그램을 시작하는 데 사용되는 정확한 명령줄을 반환하는 로컬 변수입니다.

CMDEXTVERSION

현재 명령 처리기 확장의 버전 번호를 반환하는 시스템 변수입니다.

COMPUTERNAME

컴퓨터의 이름을 반환하는 시스템 변수입니다.

COMSPEC

명령 셸 실행 파일의 정확한 경로를 반환하는 시스템 변수입니다.

DATE

현재 날짜를 반환하는 시스템 변수입니다. 이 변수는 date /t 명령과 같은 형식을 사용합니다. Cmd.exe 프로그램은 이 변수를 생성합니다. 자세한 내용은 Date 명령을 참고하십시오.

ERRORLEVEL

가장 최근에 사용한 명령의 오류 코드를 반환하는 시스템 변수입니다. 0이 아닌 값은 일반적으로 오류를 나타냅니다.

HOMEDRIVE

사용자 홈 디렉터리의 로컬 워크스테이션 드라이브 문자를 반환하는 시스템 변수입니다. 이 변수는 Local UsersGroups 그룹에 지정된 홈 디렉터리의 값을 기반으로 설정됩니다.

HOMEPATH

사용자 홈 디렉터리의 전체 경로를 반환하는 시스템 변수입니다. 이 변수는 Local UsersGroups 그룹에 지정된 홈 디렉터리의 값을 기반으로 설정됩니다.

HOMESHARE

사용자 공유 홈 디렉터리의 네트워크 경로를 반환하는 시스템 변수입니다. 이 변수는 Local UsersGroups 그룹에 지정된 홈 디렉터리의 값을 기반으로 설정됩니다.

LOGONSEVER

현재 로그온 세션의 유효성을 검사한 도메인 컨트롤러의 이름을 반환하는 로컬 변수입니다.

NUMBER_OF_PROCESSORS

컴퓨터에 설치된 프로세서의 수를 지정하는 시스템 변수입니다.

OS

운영 체제 이름을 반환하는 시스템 변수입니다. Windows XP Professional은 운영 체제 이름으로 Microsoft Windows NT를 표시합니다.

PATH

실행 파일의 검색 경로를 지정하는 시스템 변수입니다.

PATHEXT

운영 체제에서 실행 파일로 간주되는 파일 확장명 목록을 반환하는 시스템 변수입니다.

PROCESSOR_ARCHITECTURE

프로세서의 칩 구조를 반환하는 시스템 변수입니다. 값: x86, IA64

PROCESSOR_IDENTFIER

프로세서에 대한 설명을 반환하는 시스템 변수입니다.

PROCESSOR_LEVEL

컴퓨터 프로세서의 모델 번호를 반환하는 시스템 변수입니다.

PROCESSOR_REVISION

프로세서의 수정 횟수를 반환하는 시스템 변수입니다.

PROMPT

현재 인터프리터의 명령 프롬프트 설정을 반환하는 로컬 변수이며 Cmd.exe에 의해 생성됩니다.

RANDOM

0 - 32767 범위에 속하는 임의의 십진수를 반환하는 시스템 변수이며 Cmd.exe 프로그램에 의해 생성됩니다.

SYSTEMDRIVE

Windows 루트 디렉터리(예: 시스템 루트)가 들어 있는 드라이브를 반환하는 시스템 변수입니다.

SYSTEMROOT

Windows 루트 디렉터리의 위치를 반환하는 시스템 변수입니다.

TEMP 또는 TMP

현재 로그온한 사용자가 사용할 수 있는 응용 프로그램에 대한 기본 임시 디렉터리를 반환하는 시스템 및 사용자 변수입니다. TEMP를 요구하는 프로그램도 있고 TMP를 요구하는 프로그램도 있습니다.

TIME

현재 시간을 반환하는 시스템 변수입니다. 이 변수는 time /t 명령과 같은 형식을 사용하며 Cmd.exe에 의해 생성됩니다. 자세한 내용은 Time 명령을 참고하십시오.

USERDOMAIN

사용자의 계정을 포함하는 도메인 이름을 반환하는 로컬 변수입니다.

USERNAME

현재 로그온한 사용자의 이름을 반환하는 로컬 변수입니다.

USERPROFILE

현재 사용자의 위치를 반환하는 로컬 변수입니다.

WINDIR

운영 체제 디렉터리의 위치를 반환하는 시스템 변수입니다.



3.

 

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/ko/library/ServerHelp/44500063-fdaf-4e4f-8dac-476c497a166f.mspx?mfr=true

다음 표는 Windows 서버 운영 체제의 시스템 및 로컬 환경 변수를 보여 줍니다.

변수
종류
설명

%ALLUSERSPROFILE%

현지 시간

모든 사용자 프로필의 위치를 반환합니다.

%APPDATA%

현지 시간

응용 프로그램이 기본적으로 데이터를 저장하는 위치를 반환합니다.

%CD%

현지 시간

현재 디렉터리 문자열을 반환합니다.

%CMDCMDLINE%

현지 시간

현재 Cmd.exe를 시작하는 데 사용되는 정확한 명령줄을 반환합니다.

%CMDEXTVERSION%

시스템

현재 명령 프로세서 확장의 버전 번호를 반환합니다.

%COMPUTERNAME%

시스템

컴퓨터의 이름을 반환합니다.

%COMSPEC%

시스템

실행할 수 있는 명령 셸의 정확한 경로를 반환합니다.

%DATE%

시스템

현재 날짜를 반환합니다. date /t 명령과 같은 형식을 사용합니다. Cmd.exe에 의해 생성됩니다. date 명령에 대한 자세한 내용은 Date를 참조하십시오.

%ERRORLEVEL%

시스템

최근에 사용된 명령의 오류 코드를 반환합니다. 대개 0이 아닌 값은 오류를 나타냅니다.

%HOMEDRIVE%

시스템

사용자 홈 디렉터리에 연결된 로컬 워크스테이션 드라이브 문자를 반환합니다. 홈 디렉터리의 값을 기반으로 설정합니다. 사용자 홈 디렉터리는 로컬 사용자 및 그룹에서 지정됩니다.

%HOMEPATH%

시스템

사용자 홈 디렉터리의 전체 경로를 반환합니다. 홈 디렉터리의 값을 기반으로 설정합니다. 사용자 홈 디렉터리는 로컬 사용자 및 그룹에서 지정됩니다.

%HOMESHARE%

시스템

사용자 공유 홈 디렉터리의 네트워크 경로를 반환합니다. 홈 디렉터리의 값을 기반으로 설정합니다. 사용자 홈 디렉터리는 로컬 사용자 및 그룹에서 지정됩니다.

%LOGONSERVER%

현지 시간

현재 로그온 세션을 확인한 도메인 컨트롤러의 이름을 반환합니다.

%NUMBER_OF_PROCESSORS%

시스템

컴퓨터에 설치된 프로세서의 수를 지정합니다.

%OS%

시스템

운영 체제 이름을 반환합니다. Windows 2000은 운영 체제를 Windows NT로 표시합니다.

%PATH%

시스템

실행 파일의 검색 경로를 지정합니다.

%PATHEXT%

시스템

운영 체제에서 실행 가능하다고 간주되는 파일 확장명 목록을 반환합니다.

%PROCESSOR_ARCHITECTURE%

시스템

프로세서의 칩 아키텍처를 반환합니다. 값: x86 또는 IA64(Itanium 기반)

%PROCESSOR_IDENTFIER%

시스템

프로세서의 설명을 반환합니다.

%PROCESSOR_LEVEL%

시스템

컴퓨터에 설치된 프로세서의 모델 수를 반환합니다.

%PROCESSOR_REVISION%

시스템

프로세서의 수정 버전 번호를 반환합니다.

%PROMPT%

현지 시간

현재 인터프리터에 대한 명령 프롬프트 설정을 반환합니다. Cmd.exe에 의해 생성됩니다.

%RANDOM%

시스템

0에서 32767까지의 수 중에서 임의의 십진수를 반환합니다. Cmd.exe에 의해 생성됩니다.

%SYSTEMDRIVE%

시스템

Windows Server 운영 체제 루트 디렉터리(시스템 루트)가 있는 드라이브를 반환합니다.

%SYSTEMROOT%

시스템

Windows Server 운영 체제 루트 디렉터리의 위치를 반환합니다.

%TEMP% 및 %TMP%

시스템 및 사용자

현재 로그온한 사용자가 사용할 수 있는 응용 프로그램이 사용하는 기본 임시 디렉터리를 반환합니다. 일부 응용 프로그램은 TEMP를 요구하고 다른 프로그램은 TMP를 요구합니다.

%TIME%

시스템

현재 시간을 반환합니다. time /t 명령과 같은 형식을 사용합니다. Cmd.exe에 의해 생성됩니다. time 명령에 대한 자세한 내용은 Time을 참조하십시오.

%USERDOMAIN%

현지 시간

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

%USERNAME%

현지 시간

현재 로그온되어 있는 사용자의 이름을 반환합니다.

%USERPROFILE%

현지 시간

현재 사용자에 대한 프로필 위치를 반환합니다.

%WINDIR%

시스템

운영 체제 디렉터리의 위치를 반환합니다.

환경 변수 설정

set 명령을 사용하여 환경 변수를 만들고 변경하고 삭제하거나 표시합니다. set 명령은 현재 셸 환경에서만 변수를 변경합니다.

변수를 보려면 명령 프롬프트에서 다음과 같이 입력합니다.

setVariableName

변수를 추가하려면 명령 프롬프트에서 다음과 같이 입력합니다.

setVariableName=Value

변수를 제거하려면 명령 프롬프트에서 다음과 같이 입력합니다.

setVariableName=

공백을 포함해서 대부분의 문자는 변수 값으로 사용할 수 있습니다. <, >, |, & 또는 ^와 같은 특수 문자를 사용하는 경우 이 문자 앞에 이스케이프 문자(^)나 따옴표를 사용해야 합니다. 등호 다음에 오는 모든 문자는 값으로 간주되기 때문에 따옴표를 사용하는 경우엔 따옴표도 값의 일부로 포함됩니다. 다음 예제를 참조하십시오.

변수 값 new&name을 만들려면 다음과 같이 입력하십시오.

set varname=new^&name

변수 값 "new&name"을 만들려면 다음과 같이 입력하십시오.

set varname="new&name"

명령 프롬프트에서 set varname=new&name이라고 입력하면 다음 메시지와 비슷한 오류 메시지가 나타납니다.

"'name'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램 또는 배치 파일이 아닙니다."

변수 이름은 대/소문자를 구분하지 않습니다. 그러나 set은 변수를 정확히 입력한 대로 표시합니다. 변수 이름에 대문자와 소문자를 함께 사용하면 코드를 읽기가 쉽습니다(예: UserName).

참고

각 환경 변수의 최대 크기는 8192바이트입니다.

모든 변수의 최대 전체 환경 변수 크기는, 변수 이름과 등호를 포함해서 65,536KB입니다.

환경 변수 값 바꾸기

명령줄 또는 스크립트에서 변수 값 대체를 사용할 수 있도록 설정하려면 %VariableName%처럼 백분율 기호(%)로 묶습니다. 퍼센트 기호를 사용하여 Cmd.exe가 문자 비교를 하는 대신 변수 값을 참조한다는 것을 확인하십시오. 변수 이름에 대한 변수 값을 정의한 다음 변수 이름을 퍼센트 기호로 묶습니다. Cmd.exe는 변수 이름의 모든 인스턴스를 검색하여 정의된 변수 값으로 변경합니다. 예를 들어 다른 값(예: 사용자 이름)이 들어 있는 스크립트를 만들면 모든 사용자에 대한 USERNAME 환경 변수를 이 값으로 정의할 수 있습니다. 이 경우 퍼센트 기호에 묶은 변수 USERNAME을 사용하여 스크립트 하나를 쓸 수 있습니다. 스크립트를 실행하면 Cmd.exe가 %USERNAME%을 변수 값으로 변경하여 각 사용자에 대해 수동으로 작업하는 수고를 없앨 수 있습니다. 변수 바꾸기는 반복 사용할 수 없습니다. Cmd.exe가 변수를 한 번만 검사합니다. 변수 바꾸기에 대한 자세한 내용은 ForCall을 참조하십시오.



4.


아래는 도스상태에서 Set 명령을 내려서 본 결과와 도움말 입니다.


Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.


C:\Documents and Settings\Administrator>set


ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\Administrator\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=HOME_NET
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\Administrator
LOGONSERVER=\\HOME_NET
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ID
M Computer Solutions\UltraEdit-32
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0209
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
USERDOMAIN=HOME_NET
USERNAME=Administrator
USERPROFILE=C:\Documents and Settings\Administrator
windir=C:\WINDOWS


C:\Documents and Settings\Administrator>set/?


cmd.exe 환경 변수를 보여주거나 설정하거나 지웁니다.


SET [변수=[문자열]]

 

  변수      환경 변수 이름을 지정합니다.
  문자열    변수에 할당할 문자열을 지정합니다.

매개 변수 없이 'SET'이라고 입력하면, 현재 환경 변수를 볼 수 있습니다.

명령 확장을 사용하면 SET는 아래와 같이 바뀝니다.

SET 명령은 변수 이름만으로 호출되며, = 기호나 값으로 그 변수의 값을 표시하지는 않습니다. 예를 들어,


    SET P


는 문자 'P'로 시작되는 모든 변수를 표시합니다.

SET 명령은 변수 이름을 현재 환경에서 찾을 수 없으면 ERRORLEVEL을 1로 설정합니다.

SET 명령에서는 환경 변수 이름에 = 기호를 사용할 수 없습니다.

SET 명령에는 아래와 같이 새로운 두 개의 스위치가 추가됩니다.


    SET /A 표현식
    SET /P 변수=[promptString]


/A 스위치는 = 기호의 오른쪽에 있는 문자열이 수식임을 지정합니다. 이는 계산되어 문자열로 변환되거나 지정한 변수의 새 값으로 만들어진 결과입니다.
표현식 평가기는 매우 간단하며 아래 연산을 지원합니다.


    ()          - 그룹 짓기
    ! ~ -               - 단일 연산자
    * / %               -  산술 연산자
    + -                 - 산술 연산자
    << >>               - 논리 이동
    &                   - 비트단위 and
    ^                   - 비트단위 상호 배제 or
    |                   - 비트단위 or
    = *= /= %= += -=    - 할당
      &= ^= |= <<= >>=    ,                   - 식 구분 기호

 

논리 연산자를 사용하면 표현식 문자열을 인용 부호로 묶어야합니다.  표현식에서 숫자가 아닌 문자열은 환경 변수 문자열로 취급하며, 그 값은 사용하기 전에 숫자로 변환됩니다. 환경 변수 이름이 지정되었지만 현재 환경에서 정의되지 않았으면 0 값이 사용됩니다.
이렇게 하면 환경 변수 값을 가져오기 위해 % 기호를 모두 입력할 필요 없이 환경 변수 값으로 산술 연산을 수행할 수 있습니다. 명령 스크립트 밖의 명령 줄에서 SET /A를 실행하면, 표현식의 마지막 값이 표시됩니다. 할당 연산자의 왼쪽에 환경 변수 이름이 있어야 합니다.  숫자 값은 아무 접두어가 없으면 십진수이며, 접두어 0x는 16진수, 0은 8진수를 나타냅니다. 그러므로 0x12, 18는  022와 같습니다.
8진수는 혼동될 수 있다는 것에 주의하십시오: 08과 09는 8, 9가 올바른 8진수가 아니므로 잘못된 수 입니다.

/P 스위치는 변수의 값을 사용자가 입력한 입력 줄에 설정하도록 허용합니다. 입력 줄을 읽기 전에 지정한 promptString을 표시합니다.
PromptString을 비어둘 수 있습니다.


환경 변수 대체를 다음과 같이 확장했습니다:


    %PATH:str1=str2%


은(는) "str2" 문자열을 가진 확장된 결과에 나타나는 각 "str1" 문자열을 대체하는 PATH 환경 변수를 확장합니다. 확장된 출력에 나타나는 모든 "str1" 문자열을 효과적으로 삭제하기 위해 "str2" 문자열을 비어둘 수 있습니다. "str1" 문자열이 별표(*)로 시작할 수 있습니다. 이 경우에는 확장된 출력의 시작 부분에서부터 str1의 나머지 부분의 첫 문자열까지의 모든 문자열을 일치시킵니다.

또한 확장용 하위 문자열을 지정할 수 있습니다.


    %PATH:~10,5%


은(는) PATH 환경 변수를 확장한 다음 확장된 결과의 11(10 오프세트)번째 문자에서 시작한 5 문자만 사용합니다. 길이를 지정하지 않으면 기본값을 변수 값의 나머지로 지정합니다. 두(오프세트 또는 길이) 수 모두 음수이면, 사용한 수는 오프세트 또는 지정한 길이에 추가된 환경 변수 값의 길이입니다.


    %PATH:~-10%


은(는) PATH 변수의 마지막 10 문자를 추출합니다.


    %PATH:~0,-2%


은(는) PATH 변수의 2 문자만 제외한 모든 문자를 추출합니다.

지연된 환경 변수 확장명에 대한 지원이 추가되었습니다.  이 지원은 항상 기본적으로 사용할 수 없지만 /V 명령줄을 CMD.EXD로 전환하여 사용할 수 있거나 사용할 수 없게 될 수 있습니다.  CMD /?를 참조하십시오.

지연된 환경 변수 확장명은 텍스트의 줄을 실행할 때가 아니라 읽을 때 발생한 현재 확장명의 한계를 극복하는데 유용합니다.  다음 예제는 직접 변수 확장명에 나타나는 문제를 보여줍니다:


    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "%VAR%" == "after" @echo If you see this, it worked
    )

 

양쪽 IF 설명에 있는 %VAR%가 첫 번째 IF 설명을 읽을 때 대체되고 논리적으로 복합문인 IF의 본문을 포함하기 때문에 메시지를 표시하지 않습니다. 그래서 복합문에 있는 IF가 결코 같을 수 없는 "before"과 "after"를 비교하고 있습니다.  유사하게, 다음 예제는 예상한 것처럼 작업하지 않습니다:


    set LIST=
    for %i in (*) do set LIST=%LIST% %i
    echo %LIST%


현재 디렉터리에 파일 목록을 만들지 않지만, 대신 LIST 변수를 최근에 찾은 파일에 설정합니다. 다신 한번, 이것은 %LIST% 변수가 FOR 설명을 읽을 때 한번 확장되었고 그때 LIST 변수가 비었기 때문입니다.
실행하고 있는 실제 FOR loop는:


    for %i in (*) do set LIST= %i


이것은 LIST를 최근에 찾은 파일에 설정합니다.


 지연된 환경 변수 확장명은 실행 시간에 환경 변수를 확장하도록 다른 문자(느낌표)를 사용하도록 허용합니다.  지연된 변수 확장명을 사용할 수 있으면, 위의 예제가 의도된 대로 다음과 같이 작업하도록 쓰여질 수 있습니다:


    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "!VAR!" == "after" @echo 이렇게 되면
    )

    set LIST=
    for %i in (*) do set LIST=!LIST! %i
    echo %LIST%


명령 확장을 사용하면 확장될 수 있으나 SET에 의해 표시되는 변수 목록에 나타나지 않는 몇몇의 동적 환경 변수가 있습니다. 이 변수 값은 변수 값이 확장될 때마다 동적으로 계산됩니다. 사용자가 변수를 이 이름 중 하나로 분명하게 정의하면 이 정의가 아래에 설명된 동적 변수를 무시합니다:


%CD% - 현재 디렉터리 문자열로 확장합니다.

%DATE% - DATE 명령과 같은 포맷을 사용하여 현재 날짜로 확장합니다.

%TIME% - TIME 명령과 같은 포맷을 사용하여 현재 시간으로 확장합니다.

%RANDOM% - 0과 32767 사이에 있는 임의 숫자로 확장합니다.

%ERRORLEVEL% - 현재 ERRPRLEVEL 값으로 확장합니다

%CMDEXTVERSION% - 현재 명령 프로세서 확장자 버전 번호로 확장합니다.

%CMDCMDLINE% - 명령 프로세서를 호출하는 원본 명령줄로 확장합니다.

C:\Documents and Settings\Administrator>



5.


%ALLUSERSPROFILE% 모든 사용자 계정에 적용되는 프로파일 위치 → ex. C:\Documents and Settings\All Users
%APPDATA% 사용자별 어플리케이션 설정 값이 저장되는 위치 → ex. C:\Documents and Settings\Administrator\Application Data
%CommonProgramFiles% 공용 어플리케이션 설정 위치 → ex. C:\Program Files\Common Files
%COMPUTERNAME% 워크스테이션의 컴퓨터 이름 (NetBIOS 네임)
%ComSpec% 명령 처리기 위치 → ex. C:\WINDOWS\system32\cmd.exe
%COPYCMD% xcopy.exe 명령에 대한 환경 변수, Linux bash의 alias 와 비슷함.
%DIRCMD% dir 명령어에 대한 환경 변수, Linux bash의 alias 와 비슷함.
%ERRORLEVEL% 배치(batch) 파일에서 분기의 기준
%HOMEDRIVE% 사용자 홈 디렉토리에 연결된 사용자의 로컬 워크스테이션 드라이브 문자
%HOMEPATH% 사용자 홈 디렉토리의 전체 경로
%LOGONSERVER% 사용자 인증을 담당하는 컴퓨터 이름
%NUMBER_OF_PROCESSORS% 프로세서(CPU) 개수
%OS% 사용자 워크스테이션의 운영 체제
%Path% 실행파일이 실행될 경로 → ex. C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
%PATHEXT% Path 설정내에서 실행할 확장자 → ex. .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
%PROCESSOR_ARCHITECTURE% 사용자 워크스테이션의 프로세서 종류 → ex. x86
%PROCESSOR_IDENTIFIER% 사용자 워크스테이션의 프로세서 정보 → ex. x86 Family 6 Model 8 Stepping 6, GenuineIntel
%PROCESSOR_LEVEL% 사용자 워크스테이션의 프로세서 수준 → ex. 6
%PROCESSOR_REVISION% 사용자 워크스테이션 프로세서의 리비전 수준 → ex. 0806
%PROGRAMFILES% 어플리케이션이 설치될 기본 위치 → ex. C:\Program Files
%PROMPT% 사용자 명령 프롬프트 정보 → ex. $P$G
%SystemDrive% Windows 운영체제가 설치된 드라이브 → ex. C:\
%SystemRoot% WINDOWS 폴더의 위치 → ex. C:\WINDOWS
%TEMP% Windows 운영체제 및 사용자 임시 작업 폴더. → ex. C:\WINDOWS\Temp
%TMP% %TEMP% 와 동일
%USERDOMAIN% 사용자의 계정이 있는 도메인, 워크그룹 환경에서는 해당 컴퓨터 이름과 동일
%USERNAME% 로그온한 사용자 이름
%USERPROFILE% 사용자 프로파일 폴더 경로 → ex. C:\Documents and Settings\Administrator
%windir% %SYSTEMROOT% 와 동일 → ex. C:\WINDOWS
%HTTP_PROXY% HTTP 프록시 서버 주소

출처 : Tong - onggi2000님의 시스템통

브니 OS/Windows ,

04 3, 2008 10:29 04 3, 2008 10:29
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다