Skip to content

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

VariableDescriptionExample Path
%APPDATA%Current user's Application Data folderC:\Users\Username\AppData\Roaming
%TEMP%Temporary folder for current userC:\Users\Username\AppData\Local\Temp
%USERPROFILE%Current user's profile folderC:\Users\Username
%PROGRAMFILES%Program Files folderC:\Program Files
%SYSTEMROOT%Windows installation directoryC:\Windows
%USERNAME%Current user's usernameUsername
%WINDIR%Windows directoryC:\Windows
%HOMEPATH%Current user's home folder\Users\Username
%LOCALAPPDATA%Current user's local AppData folderC:\Users\Username\AppData\Local

Special Shell Locations

CommandLocation
shell:startupUser's Startup folder
shell:common startupAll Users Startup folder
shell:appdataApplication Data folder
shell:local appdataLocal Application Data folder
shell:programsStart Menu Programs folder
shell:desktopDesktop folder
shell:downloadsDownloads folder
shell:fontsFonts folder

Full paths:

  • shell:startup: C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  • shell:common startup: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

How to Access

Using Windows Run Dialog

  1. Press Win + R
  2. Type the variable or shell command
  3. Press Enter

Examples:

%APPDATA%
%TEMP%
shell:startup

Using 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
set

Using PowerShell

powershell
# View variable value
$env:APPDATA

# Open folder
explorer $env:TEMP

# List all environment variables
dir env:
Get-ChildItem env:

System Variables

VariableDescriptionExample Value
%ALLUSERSPROFILE%All Users ProfileC:\ProgramData
%COMMONPROGRAMFILES%Common Program FilesC:\Program Files\Common Files
%COMSPEC%Command ProcessorC:\Windows\System32\cmd.exe
%HOMEDRIVE%User's home driveC:
%LOGONSERVER%Domain controller\\DC01
%PATH%Executable search pathC:\Windows\System32;...
%PATHEXT%Executable file extensions.COM;.EXE;.BAT;...
%PROCESSOR_ARCHITECTURE%Processor architectureAMD64 or x86
%PUBLIC%Public user profileC:\Users\Public
%SYSTEMDRIVE%System driveC:

Program Files Variables

VariableDescription64-bit System32-bit System
%PROGRAMFILES%Program Files folderC:\Program FilesC:\Program Files
%PROGRAMFILES(X86)%32-bit programs on 64-bitC:\Program Files (x86)N/A
%PROGRAMW6432%64-bit programsC:\Program FilesN/A

AppData Folders

Windows applications store user-specific data in three AppData subfolders:

VariableFolderPurposeExample
%APPDATA%RoamingSynced across domainSettings, profiles
%LOCALAPPDATA%LocalMachine-specificCaches, temp data
N/ALocalLowLow-integrity appsBrowser data

Full paths:

  • %APPDATA%: C:\Users\Username\AppData\Roaming
  • %LOCALAPPDATA%: C:\Users\Username\AppData\Local
  • LocalLow: C:\Users\Username\AppData\LocalLow

Temp Folders

VariableScopePath
%TEMP%Current userC:\Users\Username\AppData\Local\Temp
%TMP%Current user (same as TEMP)C:\Users\Username\AppData\Local\Temp
N/ASystem-wideC:\Windows\Temp

Setting Environment Variables

Using GUI

  1. Press Win + R, type sysdm.cpl, press Enter
  2. Click "Advanced" tab
  3. Click "Environment Variables" button
  4. 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 list

Add to PATH

Temporary (current session):

cmd
:: Command Prompt
set PATH=%PATH%;C:\new\path
powershell
# 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 SilentlyContinue

Open Common Locations

cmd
:: Open Windows directory
explorer %WINDIR%

:: Open user profile
explorer %USERPROFILE%

:: Open Program Files
explorer %PROGRAMFILES%

:: Open Startup folder
explorer shell:startup

Find Application Data

cmd
:: Find app settings
explorer %APPDATA%\ApplicationName

:: Find local cache
explorer %LOCALAPPDATA%\ApplicationName

Development 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

  1. Check spelling and case
  2. Ensure variable is set (use set or dir env:)
  3. Restart terminal after setting permanent variables
  4. Check variable scope (user vs system)

PATH Too Long

Windows has a 260-character limit for paths (in some contexts):

  1. Use shorter folder names
  2. Move programs closer to drive root
  3. Enable long path support (Windows 10 1607+):
    Registry: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
    Key: LongPathsEnabled = 1

Changes Not Taking Effect

After modifying environment variables:

  1. Close and reopen terminal windows
  2. Log out and log back in
  3. Restart Windows (for system-wide changes)

See Also

External Resources

Released under the MIT License.