## How to Use Environment Variable Substitution in Batch Files (41246)

Microsoft MS-DOS operating system 3.1
Microsoft MS-DOS operating system 3.2
Microsoft MS-DOS operating system 3.21
Microsoft MS-DOS operating system 3.3
Microsoft MS-DOS operating system 3.3a
Microsoft MS-DOS operating system 4.0
Microsoft MS-DOS operating system 4.01
Microsoft MS-DOS operating system 5.0
Microsoft MS-DOS operating system 5.0a
Microsoft MS-DOS operating system 6.0
Microsoft MS-DOS operating system 6.2
Microsoft MS-DOS operating system 6.21
Microsoft MS-DOS operating system 6.22

#### SUMMARY

A feature new to the Microsoft MS-DOS packaged product is the ability to use environment variables in batch files.

These variables can be referenced by surrounding the variable with percent symbols (%). This procedure is known as environment variable substitution. However, this ability is not present at the COMMAND.COM command line, only within a batch file.

A batch file might have the following line:
```   SET PATH=c:\dos\bin;c:\dos\etc;%PATH%.
```
%PATH% is an environment variable whose value is taken from the current environment and appended to the new PATH definition. If this is done at the command line by typing the following line, the PATH environment variable's value is not substituted, so the existing PATH will not get appended to the new PATH ("%PATH%" would be appended instead).
```    SET PATH=c:\dos\binp;c:\os2\binp;%PATH%
```
The ability to use environment variable substitution is not restricted to existing MS-DOS environment variable names. Any variable that is defined in the environment can be extended using the method above.

If the variable specified by the SET command is not defined in the environment, the variable stays the same if used at the prompt, and is replaced by a null expression if used in a batch file.

For example, type the following command in which XYZZY is an undefined environment variable:

SET ONE=%XYZZY%;TWO
SET

The commands result in the following if used at the command-line prompt:
```   one=%XYZZY%;TWO
```
The commands result in the following if used in a batch file:
```   ONE=;TWO
```

 Modification Type: Last Reviewed: Major 5/10/2003 KB41246