Windows Environment Variables

Windows Environment Variables

Environment variables are mainly used within batch files, they can be created, modified and deleted for a session using the SET command. To make permanent changes, use SETX

Variables can be displayed using either SET or ECHO.
Variables have a percent sign on both sides: %ThisIsAVariable%
The variable name can include spaces, punctuation and mixed case: %_Another Ex.ample%
(This is unlike Parameter variables which only have one % sign and are always one character long: %A )
In a batch file the default behaviour is to read and expand variables one line at a time, for example:
 SET /P _price="Enter the price: "
 ECHO %_price%

The above will work, but the version below will fail because %_price% will remain undefined until processing reaches the next line, this behaviour can be changed using SETLOCAL EnableDelayedExpansion
 SET /P _price="Enter the price: " & ECHO %_price%
 ECHO That didnt work!

Standard (built-in) Environment Variables

Variable Default value:
Windows XP
Default value:
Windows 7/2008
%ALLUSERSPROFILE% C:\Documents and Settings\All Users C:\ProgramData
%APPDATA% C:\Documents and Settings\{username}\Application Data C:\Users\{username}\AppData\Roaming
%CommonProgramFiles% C:\Program Files\Common Files C:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)% C:\Program Files (x86)\Common Files C:\Program Files (x86)\Common Files
%COMPUTERNAME% {computername} {computername}
%COMSPEC% C:\Windows\System32\cmd.exe C:\Windows\System32\cmd.exe
%HOMEPATH% \Documents and Settings\{username} \Users\{username}
(but can be manually added LOCALAPPDATA=%USERPROFILE%\Local Settings\Application Data)
%LOGONSERVER% \\{domain_logon_server} \\{domain_logon_server}
%PATH% C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;{plus program paths} C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;{plus program paths}
The syntax is like the PATH variable - semicolon separators.
.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH; .MSC
%ProgramData% N/A C:\ProgramData
%ProgramFiles% C:\Program Files C:\Program Files
%ProgramFiles(x86)% 1 C:\Program Files (x86) C:\Program Files (x86)
%PROMPT% Code for current command prompt format,usually $P$G
Code for current command prompt format,usually $P$G
%PSModulePath% N/A %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
%Public% N/A C:\Users\Public
%SYSTEMROOT% C:\Windows C:\Windows
%TEMP% and %TMP% C:\Documents and Settings\{username}\Local Settings\Temp C:\Users\{Username}\AppData\Local\Temp
%USERDOMAIN% {userdomain} {userdomain}
%USERNAME% {username} {username}
%USERPROFILE% %SystemDrive%\Documents and Settings\{username} %SystemDrive%\Users\{username}
%WINDIR% C:\Windows C:\Windows
1 Only on 64 bit systems, is used to store 32 bit programs.
By default, files stored under Local Settings do not roam with a roaming profile.
Environment variables are stored in the registry:
User Variables: HKEY_CURRENT_USER\Environment
System Variables: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Dynamic variables (read only)

Dynamic environment variables are computed each time the variable is expanded.
n.b. you should not attempt to directly SET a dynamic variable.

%CD%   The current directory (string).

%DATE%   The current date using same region specific format as DATE.
%ERRORLEVEL%   The current ERRORLEVEL value, automatically set when a program exits.

%TIME%   The current time using same format as TIME.

%RANDOM%   A random decimal number between 0 and 32767.

%CMDEXTVERSION%   The current Command Processor Extensions version number.
(Windows NT = "1", Windows 2000, XP and later return "2".)

  The original command line that invoked the Command Processor.

Undocumented Dynamic variables (read only)

%__CD__%   The current directory, terminated with a trailing backslash.
%=C:%   The current directory of the C: drive.
%=D:%   The current directory of the D: drive if drive D: has been accessed in the current CMD session.
%DPATH%   Related to the (deprecated) DPATH command.
%=ExitCode%   The hex value of the last return code set by EXIT /B
%=ExitCodeAscii%   The ASCII value of the last return code set by EXIT /B if greater than 32.
%KEYS%   Related to the (deprecated) KEYS command.

Pass variables between batch scripts

There are several ways to pass values between batch files, or between a batch file and the command line, see the CALL and SETLOCAL pages for full details.
“Men may be convinced, but they cannot be pleased against their will. But though taste is obstinate, it is very variable, and time often prevails when arguments have failed” ~ Samuel Johnson


User Shell Folders - Standard folder locations for XP and Windows 7
Detecting 32 vs 64 bit Windows
CALL - Evaluate environment variables
SET - View environment variables, set local variables
SETX - Set environment variables
Q100843 - The four types of environment variable
Q286705 - Set compatibility variables
Q242557 - Registry Settings for Folder Redirection
StackOverflow - Storing a Newline in a variable
Managing Roaming User Data Deployment Guide - (Word Doc)

Hiç yorum yok:

Yorum Gönder