Windows Environment Variables
Windows environment variables are dynamic values that affect process behavior. This page provides a quick reference for the most commonly used variables.
Common Environment Variables
| Variable | Description | Example Path |
|---|---|---|
%APPDATA% | Current user's Application Data folder | C:\Users\Username\AppData\Roaming |
%TEMP% | Temporary folder for current user | C:\Users\Username\AppData\Local\Temp |
%USERPROFILE% | Current user's profile folder | C:\Users\Username |
%PROGRAMFILES% | Program Files folder | C:\Program Files |
%SYSTEMROOT% | Windows installation directory | C:\Windows |
%USERNAME% | Current user's username | Username |
%WINDIR% | Windows directory | C:\Windows |
%HOMEPATH% | Current user's home folder | \Users\Username |
%LOCALAPPDATA% | Current user's local AppData folder | C:\Users\Username\AppData\Local |
Special Shell Locations
| Command | Location |
|---|---|
shell:startup | User's Startup folder |
shell:common startup | All Users Startup folder |
shell:appdata | Application Data folder |
shell:local appdata | Local Application Data folder |
shell:programs | Start Menu Programs folder |
shell:desktop | Desktop folder |
shell:downloads | Downloads folder |
shell:fonts | Fonts folder |
Full paths:
shell:startup:C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupshell:common startup:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
How to Access
Using Windows Run Dialog
- Press
Win + R - Type the variable or shell command
- Press Enter
Examples:
%APPDATA%
%TEMP%
shell:startupUsing File Explorer
Type the variable in the address bar:
%USERPROFILE%
%PROGRAMFILES%Using Command Prompt
cmd
:: View variable value
echo %APPDATA%
:: Open folder
explorer %TEMP%
:: List all environment variables
setUsing PowerShell
powershell
# View variable value
$env:APPDATA
# Open folder
explorer $env:TEMP
# List all environment variables
dir env:
Get-ChildItem env:System Variables
| Variable | Description | Example Value |
|---|---|---|
%ALLUSERSPROFILE% | All Users Profile | C:\ProgramData |
%COMMONPROGRAMFILES% | Common Program Files | C:\Program Files\Common Files |
%COMSPEC% | Command Processor | C:\Windows\System32\cmd.exe |
%HOMEDRIVE% | User's home drive | C: |
%LOGONSERVER% | Domain controller | \\DC01 |
%PATH% | Executable search path | C:\Windows\System32;... |
%PATHEXT% | Executable file extensions | .COM;.EXE;.BAT;... |
%PROCESSOR_ARCHITECTURE% | Processor architecture | AMD64 or x86 |
%PUBLIC% | Public user profile | C:\Users\Public |
%SYSTEMDRIVE% | System drive | C: |
Program Files Variables
| Variable | Description | 64-bit System | 32-bit System |
|---|---|---|---|
%PROGRAMFILES% | Program Files folder | C:\Program Files | C:\Program Files |
%PROGRAMFILES(X86)% | 32-bit programs on 64-bit | C:\Program Files (x86) | N/A |
%PROGRAMW6432% | 64-bit programs | C:\Program Files | N/A |
AppData Folders
Windows applications store user-specific data in three AppData subfolders:
| Variable | Folder | Purpose | Example |
|---|---|---|---|
%APPDATA% | Roaming | Synced across domain | Settings, profiles |
%LOCALAPPDATA% | Local | Machine-specific | Caches, temp data |
| N/A | LocalLow | Low-integrity apps | Browser data |
Full paths:
%APPDATA%:C:\Users\Username\AppData\Roaming%LOCALAPPDATA%:C:\Users\Username\AppData\Local- LocalLow:
C:\Users\Username\AppData\LocalLow
Temp Folders
| Variable | Scope | Path |
|---|---|---|
%TEMP% | Current user | C:\Users\Username\AppData\Local\Temp |
%TMP% | Current user (same as TEMP) | C:\Users\Username\AppData\Local\Temp |
| N/A | System-wide | C:\Windows\Temp |
Setting Environment Variables
Using GUI
- Press
Win + R, typesysdm.cpl, press Enter - Click "Advanced" tab
- Click "Environment Variables" button
- Add or edit variables
Using Command Prompt
cmd
:: Set for current session only
set MY_VAR=value
:: Set permanently (user)
setx MY_VAR "value"
:: Set permanently (system) - requires admin
setx MY_VAR "value" /M
:: Add to PATH
setx PATH "%PATH%;C:\new\path"Using PowerShell
powershell
# Set for current session only
$env:MY_VAR = "value"
# Set permanently (user)
[Environment]::SetEnvironmentVariable("MY_VAR", "value", "User")
# Set permanently (system) - requires admin
[Environment]::SetEnvironmentVariable("MY_VAR", "value", "Machine")
# Add to PATH (user)
$path = [Environment]::GetEnvironmentVariable("PATH", "User")
[Environment]::SetEnvironmentVariable("PATH", "$path;C:\new\path", "User")PATH Variable
The PATH variable contains directories where Windows searches for executables.
View PATH
Command Prompt:
cmd
echo %PATH%PowerShell:
powershell
$env:PATH
$env:PATH -split ';' # Display as listAdd to PATH
Temporary (current session):
cmd
:: Command Prompt
set PATH=%PATH%;C:\new\pathpowershell
# PowerShell
$env:PATH += ";C:\new\path"Permanent:
powershell
# PowerShell (user PATH)
$path = [Environment]::GetEnvironmentVariable("PATH", "User")
$newPath = "$path;C:\new\path"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "User")Common Use Cases
Clear Temp Files
cmd
:: Delete temp files
del /q /f /s %TEMP%\*powershell
# PowerShell
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinueOpen Common Locations
cmd
:: Open Windows directory
explorer %WINDIR%
:: Open user profile
explorer %USERPROFILE%
:: Open Program Files
explorer %PROGRAMFILES%
:: Open Startup folder
explorer shell:startupFind Application Data
cmd
:: Find app settings
explorer %APPDATA%\ApplicationName
:: Find local cache
explorer %LOCALAPPDATA%\ApplicationNameDevelopment Variables
Java
cmd
echo %JAVA_HOME%
echo %JRE_HOME%Node.js
cmd
echo %NODE_PATH%Python
cmd
echo %PYTHONPATH%.NET
cmd
echo %DOTNET_ROOT%Troubleshooting
Variable Not Found
- Check spelling and case
- Ensure variable is set (use
setordir env:) - Restart terminal after setting permanent variables
- Check variable scope (user vs system)
PATH Too Long
Windows has a 260-character limit for paths (in some contexts):
- Use shorter folder names
- Move programs closer to drive root
- Enable long path support (Windows 10 1607+):
Registry: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem Key: LongPathsEnabled = 1
Changes Not Taking Effect
After modifying environment variables:
- Close and reopen terminal windows
- Log out and log back in
- Restart Windows (for system-wide changes)
See Also
- Windows System Shortcuts - Control panel and system shortcuts
- Cross-Platform Terminal Commands - Environment variables across platforms
- Windows Control Panel - System configuration