设置环境变量 setx

设置环境变量 setx

我正在 cmd 中设置环境变量setx,该变量是从批处理文件启动的。如果我关闭 shell 并再次从批处理文件打开新文件并使用set命令检查它,则不会获得这个新变量。我可以通过 Windows 和 regedit 查看该变量,有人知道我做错了什么吗?

例如批次:

Rem set some local variables
Set varableA="test"
...
Start /B cmd.exe /k 

在打开的 shell 中:

Rem set system environment variable
Setx -m variableB value

关闭 shell 并再次运行批处理

在新的 shell 中:

Set var

并没有variableB,但在 Windows 和注册表中我可以看到它

答案1

即使你现在知道你做错了什么。你仍然应该在你的问题中说出来。你的问题问得很糟糕,因为你问的是为什么你做的事情没有奏效,而且你没有确切地展示你做了什么。粘贴你执行的命令。

以下是如何使用 setx。这是有效的。

C:\>setx aaa rrr

SUCCESS: Specified value was saved.

以下是它设定的证据-

C:\>@REG QUERY "HKCU\Environment"
    

HKEY_CURRENT_USER\Environment
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    aaa    REG_SZ    rrr

现在,如果您执行 set(查看环境变量的命令),该值将不会显示。但打开一个新的 cmd 窗口并执行 set,它就会显示。它位于用户环境变量部分。而不是系统部分。

对于系统环境变量,您需要setx aaa 123 -m(即末尾的 -m),并且系统变量在注册表中的位置(在 xp 或 7 中)将是, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 您需要在管理中输入 cmd 提示符。注意路径,您应该备份它setx pathbk "%path%" -m

我建议编写一个批处理文件来永久设置 %uvar% 和 %mvar% 以指向环境变量的注册表位置

设置 mvar=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

setx mvar "%mvar%"

设置 uvar=HKCU\Environment

setx uvar "%uvar%"

那么你可以做

注册查询 %uvar%

注册查询 %mvar%

注意-setx 可能有点危险,可能会写一些你不想要的东西,所以请先执行 set>aa 以便你有备份。

还要注意,如果您想使用 reg 来执行此操作,那么除了 reg 查询之外,如果您执行 reg /?,您会看到例如 reg add,然后您可以执行 reg add /?

有关的

https://stackoverflow.com/questions/1472722/how-to-remove-an-environment-variable-from-the-system-configuration-with-a-batch

https://stackoverflow.com/questions/13222724/command-line-to-remove-an-environment-variable-from-the-os-level-configuration

相关内容