The SET command in Windows CMD is used for displaying, setting, or removing environment variables in the command session. It can modify the system environment variables globally or configure them locally, affecting the behavior of scripts and the system. The command is pivotal in scripting and automation, managing paths for executable files, and configuring system-wide preferences or settings based on user environments.


The basic syntax for using the SET command is as follows:

SET [variable=[string]]
  • variable is the name of the environment variable you want to set or modify.
  • string is the value that will be assigned to the variable. If the string is omitted, the command will delete the variable from the current session.

Additional syntax includes:

  • SET (by itself, lists all environment variables).
  • SET prefix (lists all variables starting with ‘prefix’).
  • SET "variable=" (clears the value of a variable).


The SET command is straightforward with no additional flags or options for its operation. Its functionality is primarily based on how the command and arguments are structured.


Here are a few examples of how SET can be used in various scenarios:

  1. Viewing All Environment Variables:


    This command will display all environment variables set in the current session.

  2. Creating or Modifying an Environment Variable:

    SET PATH=%PATH%;C:\NewPath\bin

    This will append C:\NewPath\bin to the existing PATH environment variable.

  3. Viewing Environment Variables Starting with a Specific Prefix:


    This will list all variables that start with TEMP.

  4. Deleting an Environment Variable:


    This sets TEMP to an empty value, effectively deleting it from the current session.

Common Issues

  • Accidental Overwriting: Be cautious when setting environment variables; improperly specifying the SET command can overwrite existing variables unintentionally.

    • Solution: Always backup critical environment variables before making changes.
  • Variable Not Persisting: Variables set using the SET command are valid only in the context of the script or command window where they were set.

    • Solution: To make permanent changes, use the System Properties or scripts that modify the registry.


The SET command is often used in conjunction with other CMD commands or scripts. Here’s an example of integrating SET with a batch script:

@echo off
mkdir %LOGPATH%
echo Log created on %DATE% at %TIME% > %LOGFILE%

This script sets up a log directory and log file, demonstrating the use of environment variables to manage file paths dynamically.

  • SETX: Used for setting the environment variables permanently system-wide or for the current user.
  • SETLOCAL and ENDLOCAL: Commands that enable local environments in batch scripts, useful for temporarily changing environment variables without affecting the system environment.

For further details about environment variable commands and usage, refer to the Microsoft official documentation: Windows Command Line.