如何在不解释变量的情况下 print/echo windows PATH 等环境变量?

How to print/echo windows environment variables such as PATH without interpreting variables?

例如在控制 Panel\System 和 Security\System > 高级系统设置 > 系统属性 > 高级选项卡 > 环境变量...

我有以下路径:

值 1:

PATH=%JAVA_HOME%\bin;e:\Groovy\GROOVY~1.0\bin;E:\Python;C:\Users\MyName\AppData\Local\GitHubDesktop\bin;%PYTHON3_HOME%;%GROOVY_HOME%\bin;

在 cmd 中,我这样做:

echo %PATH%

然后我得到:

值 2:

E:\Program Files\Java\jdk1.8.0_151\bin;e:\Groovy\GROOVY~1.0\bin;C:\Users\MyName\AppData\Local\GitHubDesktop\bin;E:\Program Files\Python\Python36-32;E:\Program Files (x86)\Groovy\Groovy-2.6.0\bin; 

那么 cmd 中的什么命令将能够打印出与系统属性(值 1)?

set <variableName>命令显示变量而不解释内容。
或者你也可以为此延迟扩展。

setlocal EnableDelayedExpansion
echo !path!

但在您的情况下,echo %path% 中的扩展不会进一步扩展 PATH 内容中的任何百分比部分(您只会遇到其他字符的问题,例如 &|<>

设置路径set PATH=%JAVA_HOME%\bin后内容已经展开。

当您设置百分比部分而不是扩展版本时,PATH 搜索将不再起作用,因为 cmd.exe 会尝试在 [=18= 的文字路径中搜索]

要从系统属性中获取 PATH 的定义,可以通过REG QUERY从注册表中检索。

用户变量

reg query HKEY_CURRENT_USER\Environment /v path  

和系统变量

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path

从 cmd,试试这个:

powershell gci env:<name_variable>

示例:powershell gci env:Path

如果您希望所有变量名都以 Path 开头(或结尾),只需在变量名之后(或之前)添加 *

示例:powershell gci env:*Path*

:-)