我正在 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 /?
有关的
和