我有一个脚本可以做类似的事情
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