How to Display Environment Variables in Windows Command Prompt

Inspecting environment variables is a common requirement when working within the Windows ecosystem, particularly for development, scripting, or system administration tasks.

These variables contain essential configuration details, such as path information and system settings. This article outlines the standard procedures for listing environment variables directly from the Windows Command Prompt (`cmd.exe`) and explores related techniques using PowerShell and direct registry inspection.

Why Access Environment Variables?

Environment variables act as named values holding system-wide or user-specific configuration data. Accessing them via the command line is crucial for:

  • Verifying software installation paths (e.g., checking the PATH variable).
  • Debugging scripts that rely on specific environment settings.
  • Understanding the current configuration context for applications.
  • Troubleshooting system behavior influenced by environmental settings.

The native Windows Command Prompt provides built-in tools to achieve this efficiently.

Solutions for Listing Environment Variables

Which method should be used to list environment variables?

Read: How to Run Multiple Commands Sequentially in Windows CMD

Using `SET` in Command Prompt (`cmd.exe`)

The primary and most direct method for viewing environment variables within a standard Windows Command Prompt session is the SET command.

The Standard `SET` Command

Executing SET without any parameters instructs the command interpreter to display all environment variables currently defined within the active session, along with their corresponding values.

SET

This command provides a complete snapshot of the environment available to the current command prompt instance.

Filtering Variables by Prefix

To display only variables whose names begin with a specific sequence of characters, provide that sequence as an argument to the SET command. This helps in locating specific groups of related variables.

For instance, to view variables starting with “derby”:

SET derby

The output will be limited to variables like DERBY_HOME if they exist and are defined.

Managing Output for Long Lists

The list of environment variables can be extensive. To manage the output effectively, you can employ standard command-line techniques:

  • Pagination: Pipe the output of SET to the more command. This displays the variables one screen page at a time, allowing for easier reading.
    SET | more
  • Redirection to File: Redirect the output to a text file for later review or documentation using the > operator.
    SET > output.txt

    The file output.txt will then contain the full list of environment variables.

Note that you can use the echo %VARIABLE% syntax for checking specific variables.

Using PowerShell

While the primary focus is cmd.exe, it’s useful to know the equivalent in PowerShell, as it offers different capabilities and syntax.

Read: How to Close a Specific Port on Linux and Windows

PowerShell `Get-ChildItem` Cmdlet

PowerShell treats environment variables as items within a specific drive, Env:. The Get-ChildItem cmdlet (aliased as gci, ls, or dir) is used to list items within this drive.

Get-ChildItem Env:

Shorter aliases achieve the same result:

gci Env:
dir Env:
ls Env:

Note: The colon (`:`) after `Env` is essential.

Preventing Truncation in PowerShell

Sometimes, PowerShell truncates long variable values in the default view. To ensure complete values are displayed clearly, pipe the output to Format-Table with specific parameters for wrapping text and auto-sizing columns.

Get-ChildItem Env: | Format-Table -Wrap -AutoSize

Querying the Registry Directly

Environment variables (particularly system and user variables) are persistently stored in the Windows Registry. The reg query command can inspect these registry locations directly.

This method differs from SET as it reads the stored configuration, which might include unexpanded variables (e.g., showing %USERPROFILE%\AppData instead of the fully resolved path) and may not reflect variables set dynamically within the current session only.

Variable Type Registry Path Command
User Variables HKEY_CURRENT_USER\Environment
reg query HKEY_CURRENT_USER\Environment
System Variables HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"


Using reg query can be particularly useful in contexts like automated scripts (e.g., GitHub Actions) where SET might behave differently or is unavailable.

Read: Identifying Processes Using Specific TCP/UDP Ports on Windows

Confrmation

To confirm that the commands are working correctly, simply execute them in the appropriate shell (`cmd.exe` or PowerShell). Observe the output: it should list variable names and their corresponding values. If searching for a specific variable, check if its name appears in the generated list.

Key notes

  • `SET` in PowerShell: Typing set in a PowerShell window invokes the Set-Variable cmdlet, which expects different parameters and will prompt for input. Use Get-ChildItem Env: (or its aliases) in PowerShell instead. The SET command discussed here is specific to cmd.exe.
  • Command Extensions: The standard behavior of SET (displaying all variables when used without parameters) relies on Windows Command Extensions. These are typically enabled by default on modern Windows versions but could potentially be disabled on older systems or through specific configurations.Comparing SET, SETX, reg query in command-line tools
  • `setx` Command Behavior: If environment variables are defined using the setx command, these changes are applied persistently but will only be reflected in *new* command prompt windows opened *after* setx was run. They will not appear in the current window where setx was executed when checked immediately with SET.
  • Registry vs. Current Session: Remember that reg query shows the persisted, potentially unexpanded, variable definitions stored in the registry. The SET command displays the variables active in the *current* command prompt session, including dynamically set variables and fully expanded paths. The two lists may not be identical.

Conclusion

Listing environment variables in the Windows Command Prompt is readily accomplished using the built-in SET command. This command provides options for viewing all variables, filtering by prefix, and managing output through pagination or file redirection.

While PowerShell offers the Get-ChildItem Env: cmdlet for a similar purpose with enhanced formatting options, and reg query allows direct inspection of registry-stored variables, the SET command remains the fundamental tool within the traditional cmd.exe environment for quickly assessing the active environmental configuration.

 

Sara Esmiralda

Sara specializes in the Microsoft ecosystem, bringing a wealth of knowledge from managing enterprise environments. Her expertise covers Windows Server administration, Active Directory design and management, Group Policy optimization, PowerShell scripting, and Azure cloud services. She enjoys demystifying complex Windows concepts and sharing practical tips for system configuration, security hardening, and troubleshooting common issues.