为什么用户环境变量有时不展开?
Why are user environment variables sometimes not expanded?
我通过控制面板设置了一个用户环境变量 FOO=bar。
然后我打开 2 cmd windows。第一个来自开始按钮,另一个来自我工作目录的上下文(shift+右键单击)菜单,然后键入 echo %FOO%
.
第一个打印 bar
。另一个打印 %FOO%
为什么输出不同&有没有办法从每个 cmd 访问用户环境变量window?
用户环境变量是继承的。每个进程在创建时从其父进程获取它们。更改它们将影响当前进程及其 future 子进程。
你是如何设置变量的?
我相信您可能将其设置为 "CMD variable",该范围仅对当前会话有效。
对于持久变量,您应该使用 SETX 命令:
SETX FOO bar
请访问以下链接了解 SET 和 SETX 命令之间的详细信息:
我正在处理同样的问题。
c:\SetX test NOT
c:\echo test=%test% fail.
test= fail.
c:\start %comspec%
Microsoft Wind..er..DOS [Version 6.1.7601]
c:\echo test=%test% fail.
test= fail.
Start -> run -> cmd
echo test=%test% fail.
test=NOT fail.
win-r 宏可以工作,但更喜欢安静/非侵入式解决方案。
我尝试使用 schtasks /运行 但它保留了旧环境。
可能有一个使用新环境启动的命令。
Nirsoft 或 sysinternals 可能有一些东西...
仍在寻找。
*** MSalters 正确回答了 OP,继承问题。
此处的命令提示符继承了资源管理器的旧环境
taskkill /im explorer.exe /f
start explorer
那么新的上下文菜单命令提示符应该可以工作了。
我通过控制面板设置了一个用户环境变量 FOO=bar。
然后我打开 2 cmd windows。第一个来自开始按钮,另一个来自我工作目录的上下文(shift+右键单击)菜单,然后键入 echo %FOO%
.
第一个打印 bar
。另一个打印 %FOO%
为什么输出不同&有没有办法从每个 cmd 访问用户环境变量window?
用户环境变量是继承的。每个进程在创建时从其父进程获取它们。更改它们将影响当前进程及其 future 子进程。
你是如何设置变量的? 我相信您可能将其设置为 "CMD variable",该范围仅对当前会话有效。
对于持久变量,您应该使用 SETX 命令:
SETX FOO bar
请访问以下链接了解 SET 和 SETX 命令之间的详细信息:
我正在处理同样的问题。
c:\SetX test NOT
c:\echo test=%test% fail.
test= fail.
c:\start %comspec%
Microsoft Wind..er..DOS [Version 6.1.7601]
c:\echo test=%test% fail.
test= fail.
Start -> run -> cmd
echo test=%test% fail.
test=NOT fail.
win-r 宏可以工作,但更喜欢安静/非侵入式解决方案。
我尝试使用 schtasks /运行 但它保留了旧环境。
可能有一个使用新环境启动的命令。
Nirsoft 或 sysinternals 可能有一些东西...
仍在寻找。
*** MSalters 正确回答了 OP,继承问题。
此处的命令提示符继承了资源管理器的旧环境
taskkill /im explorer.exe /f
start explorer
那么新的上下文菜单命令提示符应该可以工作了。