从批处理设置环境变量

从批处理设置环境变量

envir当我使用命令设置环境变量时setx,它似乎并没有在环境中真正“设置”。

setx envir "windows"
if 1==1 (
    setx envir "unix"
)
echo %envir%
set

set命令显示环境变量列表,但不显示上一行当前设置的变量。

答案1

在您的示例中,环境变量%ENVIR%设置为"windows“。这存储在注册表中特定于用户的环境变量中Windows。更改不会直接反映在当前活动进程的环境中。

要通过set命令实际查看此新设置,您必须使用 打开一个新的命令框cmd.exe。当前命令框不会自动从注册表中重新读取更改的设置。您也可以使用系统控制SYSTEM并查看Extended Properties / Environment

在此处输入图片描述

答案2

阿克塞尔是正确的。

setx将变量存储在注册表中,但更改不会反映在任何正在运行的程序(包括当前程序)的环境中。

以下是输出的一些相关部分setx /?

C:\>setx /?

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session. 

相关内容