Windows 10:添加了环境变量,但未使用“echo”打印
Posted
技术标签:
【中文标题】Windows 10:添加了环境变量,但未使用“echo”打印【英文标题】:Windows 10: Environment variable added, but not printed with 'echo' 【发布时间】:2018-12-14 22:54:19 【问题描述】:我在 Windows 10 上添加了LOG_LEVEL
作为系统环境变量,并将其值设置为INFO
。
然后(仅在按下 OK 并关闭该窗口后),我打开了一个命令行终端并输入了echo %LOG_LERVEL%
,它打印了...%LOG_LEVEL%
。
当我在添加我之前已经存在的环境变量上尝试相同的环境变量时,例如 - echo %OS%
,它会打印 Windows_NT
。
现在,我尝试在几个不同的路径中关闭并重新打开命令行终端。
在其中一个(我现在无法重现)中,该命令确实打印了INFO
(我的变量的值)。
当我使用 Power Shell(微软在上次更新时将新的命令行终端插入我的系统,迫使旧的命令行从上下文菜单中消失)尝试同样的事情时,情况更糟,因为它既不能识别我添加的变量,也不能识别之前存在的其他变量。
对于上面的相同示例,echo %OS%
打印 %OS%
。
这是怎么回事?
【问题讨论】:
PowerShell 与命令行完全不同。不要期望环境变量以相同的方式工作。它们是从Env:
提供者访问的。
@Phylogenesis:谢谢,但 Power Shell 只是第一次失败后的又一次尝试。我的主要问题是它甚至在旧的命令行终端中都不起作用。因此,如果您能为旧的命令行终端提出解决方案,我将不胜感激。谢谢。
如果您有一个打开的cmd.exe
或 PowerShell 窗口并使用 GUI 设置环境变量,则更改不会传播到打开的窗口。您必须重新启动 cmd.exe
或 PowerShell 窗口才能看到新变量。
顺便说一句,你的问题还是太啰嗦了。请注意对您之前的问题所做的修改,并编写更简洁的新问题。
@goodvibration 要回答您关于“我们”的问题,它是guidances given on how to use this network of sites 之一。为了让以后遇到问题的其他人更容易,无论他们是来回答这个问题还是找到类似问题的答案,帖子应该尽可能简短,同时仍然包含所有必要的信息。这意味着应该避免使用“请”和“谢谢”;坚持主题,让人们回答。 There is no chit-chat.
【参考方案1】:
Powershell 不是 cmd.exe.. 如果你想在 Powershell 中打印出系统变量的值,你可以使用
[Environment]::ExpandEnvironmentVariables("%LOG_LEVEL%")
或者调用cmd.exe,执行你习惯的echo
命令
cmd.exe /c "echo %LOG_LEVEL%"
如果你真的讨厌 powershell 并想回到旧的 cmd.exe,我相信你可以(仍然)这样做。在这里阅读:https://support.microsoft.com/en-us/help/4027690/windows-powershell-is-replacing-command-prompt
【讨论】:
谢谢,但这并不能回答我最初和主要的问题 - 我的环境变量为什么没有在旧的命令行终端中打印出来? 奇怪..我无法重现。我使用的是 Windows 10 Pro 版本 1803,对我来说它按预期工作。set
命令是否以正确的值显示您的变量?
我通过 GUI 界面设置它(即通过编辑 Windows 系统环境变量)。
以管理员或用户身份运行命令行工具有什么不同吗?
$env:LOG_LEVEL
实际上是您在 PowerShell 中引用它的方式。【参考方案2】:
确保您没有像我一样犯愚蠢的错误并输入错误的变量名。 就我而言,我花了一段时间(即使在检查之后)才注意到我将变量设置为 JAVE_HOME 而不是 JAVA_HOME
【讨论】:
【参考方案3】:如果您在命令行窗口中使用“set”,则会创建一个临时环境变量,当您关闭窗口时该变量会丢失。如果您想要一个永久的,您可以使用“setx”或使用控制面板中的系统属性对话框。
【讨论】:
以上是关于Windows 10:添加了环境变量,但未使用“echo”打印的主要内容,如果未能解决你的问题,请参考以下文章