Windows批处理脚本获取环境变量变化

Windows批处理脚本获取环境变量变化

我有一个脚本可以做类似的事情

setx %PATH% %PATH%;%ANOTHER_VAR%

echo %PATH%

当我回显路径时,它不包含 %ANOTHER_VAR%。有没有办法确保第二次回显 %PATH% 时反映出新的变量

编辑:我正在编写一个 puppet 脚本,该脚本调用 2 个单独的 exec 命令。第一个在变量上调用 setx。由于第二个是在新的 exec 命令中访问的,因此我希望它可以访问新设置的变量,但事实并非如此。

我也尝试过在脚本 1 中创建一个变量并从脚本 2 中访问该变量,但无法访问(如预期的那样)。

答案1

据我了解,setx 通过注册表设置变量(参见此文章)。它需要启动一个新的命令 shell 才能查看结果。

如果要更改当前命令会话下的路径设置,请使用set path=%path%;%another_variable%

回应评论,这是来自 setx /? 的:

注意:1)SETX 将变量写入注册表中的主环境。

2)在本地系统上,此工具创建或修改的变量将在未来的命令窗口中可用,但不在当前 CMD.exe 命令窗口中

如果您想在当前命令会话中更改变量,请使用普通的 SET。

以下是我的系统的输出:

C:\Windows\system32>set path2=%cd%

C:\Windows\system32>set path2
path2=C:\Windows\system32

C:\Windows\system32>cd drivers

C:\Windows\System32\drivers>set path2=%path2%;%cd%

C:\Windows\System32\drivers>set path2
path2=C:\Windows\system32;C:\Windows\System32\drivers

相关内容