ZetCode

Windows 命令提示符环境变量

最后修改于 2025 年 7 月 14 日

Windows 命令提示符中的环境变量是存储系统和用户信息的可命名值。它们影响程序和脚本的行为。变量可以包含路径、配置设置或临时数据。Windows 和用户都可以创建和修改这些变量。

系统环境变量由 Windows 预定义,并在所有用户会话中保持一致。用户变量特定于每个用户帐户。临时变量仅存在于当前命令提示符会话中。变量通过将其名称括在百分号(%VARNAME%)中来引用。

常见的系统变量包括 %PATH%(可执行文件搜索路径)、%TEMP%(临时文件目录)和 %USERPROFILE%(当前用户的主目录)。这些变量为在脚本中引用系统位置提供了可移植的方式。变量有助于创建可跨不同 Windows 安装工作的灵活脚本。

本教程涵盖了环境变量概念、查看和修改变量以及它们用法的实际示例。您将学会利用变量进行更强大的命令行脚本编写和系统管理。

查看环境变量

与环境变量进行的最基本操作是查看它们的值。Cmd 提供了几种检查变量及其内容的方法。

viewvars.bat
@echo off
echo System Root: %SystemRoot%
echo User Profile: %USERPROFILE%
echo All variables:
set

此脚本演示了查看环境变量的不同方法。它显示了特定变量,并列出了所有可用的变量。

echo System Root: %SystemRoot%

显示存储在 SystemRoot 中的 Windows 安装目录。这是一个许多程序和脚本使用的关键系统变量。

echo User Profile: %USERPROFILE%

显示当前用户配置文件目录的路径。此变量有助于创建可跨不同用户帐户工作的可移植脚本。

set

列出当前会话的所有环境变量。输出包括用户定义的系统变量和用户定义的变量及其当前值。

C:\>viewvars.bat
System Root: C:\Windows
User Profile: C:\Users\username
All variables:
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\username\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
...

输出首先显示特定变量,然后是完整列表。您的实际值将根据您的系统配置而有所不同。

创建和修改变量

您可以使用 set 命令创建新的环境变量或修改现有变量。更改可以是临时的,也可以是永久的。

modifyvars.bat
@echo off
echo Creating temporary variable...
set MYTEMP=Hello
echo %MYTEMP%

echo Modifying PATH...
set PATH=%PATH%;C:\MyTools
echo New PATH: %PATH%

此脚本演示了创建临时变量和修改系统 PATH 变量。以这种方式进行的更改只会影响当前会话。

set MYTEMP=Hello

创建了一个名为 MYTEMP,值为“Hello”的新环境变量。此变量仅在当前的命令提示符会话中存在。

set PATH=%PATH%;C:\MyTools

将 C:\MyTools 追加到现有的 PATH 变量。%PATH% 引用获取当前值,我们添加我们的新路径,用分号分隔。

C:\>modifyvars.bat
Creating temporary variable...
Hello
Modifying PATH...
New PATH: C:\Windows\system32;C:\Windows;C:\MyTools

输出显示了我们的临时变量和已修改的 PATH。请注意,PATH 的更改在命令提示符关闭时会恢复。

在路径中使用变量

环境变量通常用于动态构建文件路径。这使得脚本在不同的系统和用户之间更具可移植性。

pathvars.bat
@echo off
echo Desktop location: %USERPROFILE%\Desktop
echo System drivers: %SystemRoot%\System32\drivers

mkdir "%USERPROFILE%\MyScripts"
echo Created directory: %USERPROFILE%\MyScripts

此脚本演示了在处理文件和目录时如何使用环境变量来引用常见的系统位置。

echo Desktop location: %USERPROFILE%\Desktop

显示当前用户桌面的路径。使用 %USERPROFILE% 可确保脚本正常工作,无论实际用户名或配置文件位置如何。

mkdir "%USERPROFILE%\MyScripts"

在用户配置文件文件夹中创建一个名为 MyScripts 的新目录。使用引号可正确处理包含空格的路径。

C:\>pathvars.bat
Desktop location: C:\Users\username\Desktop
System drivers: C:\Windows\System32\drivers
Created directory: C:\Users\username\MyScripts

输出演示了变量如何解析为实际的系统路径。创建的目录将出现在您的用户配置文件文件夹中。

使用变量进行条件执行

环境变量可以通过条件语句控制脚本流。这使得创建能够适应不同环境的灵活脚本成为可能。

conditional.bat
@echo off
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
    echo Running on 64-bit system
) else (
    echo Running on 32-bit system
)

if exist "%TEMP%\testfile.txt" (
    echo Temporary file exists
) else (
    echo Temporary file does not exist
)

此脚本演示了如何在条件语句中使用环境变量,以根据系统特性或文件存在情况做出决策。

if "%PROCESSOR_ARCHITECTURE%"=="AMD64"

通过检查 PROCESSOR_ARCHITECTURE 变量来检查系统是否为 64 位。这有助于创建特定于体系结构的脚本分支。

if exist "%TEMP%\testfile.txt"

测试临时目录中是否存在文件。%TEMP% 变量指向系统指定的临时文件位置。

C:\>conditional.bat
Running on 64-bit system
Temporary file does not exist

输出取决于您的系统体系结构以及测试文件是否存在。您的结果可能会根据这些因素而有所不同。

持久化环境变量

要使环境变量的更改永久化,您需要使用 setx 命令或通过“系统属性”进行修改。这些更改在重新启动后仍然保留。

persistent.bat
@echo off
echo Creating persistent variable...
setx MYPERM "Persistent Value"

echo Current value in this session: %MYPERM%
echo Start a new command prompt to see the persistent value.

此脚本演示了创建持久环境变量,该变量在命令提示符关闭后仍然可用。

setx MYPERM "Persistent Value"

创建了一个新的用户环境变量,该环境变量在命令提示符关闭后仍然存在。该变量将在所有未来的会话中可用。

echo Current value in this session: %MYPERM%

尝试显示新变量的值。请注意,setx 不会影响当前会话,只会影响未来的会话。

C:\>persistent.bat
Creating persistent variable...

SUCCESS: Specified value was saved.
Current value in this session: %MYPERM%
Start a new command prompt to see the persistent value.

输出显示变量已保存,但在当前会话中不可用。打开新的命令提示符以验证其持久性。

来源

Microsoft SET 命令文档

在本文中,我们介绍了 Windows 命令提示符环境变量。这些技术能够实现更灵活和可移植的脚本编写和系统管理。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。