如何与用户特定的环境变量分开列出全局环境变量?


13

在Windows(例如版本10)中,您可以使用以下命令列出环境变量

set

您如何仅列出所有用户都相同的环境变量或仅列出当前用户或会话的环境变量?

Answers:


17

事情比微软有时看起来要复杂一些。

许多环境变量都存储在注册表中。这意味着您可以使用以下reg命令查询它们

所有用户共有

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

特定于当前用户会话

reg query HKCU\Environment
reg query "HKCU\Volatile Environment"

由用户设定

如果使用setx variable value命令永久设置自己的环境变量,则该变量将存储在注册表中,但不会立即可用。

C:\>setx test removeme

SUCCESS: Specified value was saved.

C:\>reg query "HKCU\Environment"

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    test    REG_SZ    removeme

如果使用set variable=value命令,则该变量立即可用,但不存储在注册表中。reg尽管它们显示为,但是您不能使用命令列出它们set。在您结束命令提示符会话后,这些临时环境变量将不会保留。

动态环境变量

有些结构的行为就像环境变量一样,不会以这种方式存储在注册表中。例如:

echo %TIME%

1
只是出于好奇:是否可以刷新以前添加到注册表的变量?例如,setx test removeme那么是什么,set test %test%以便您可以用简单的set?列出所有变量?我以为可以实现命令/批处理脚本,以便根据要求将它们明确显示出来……
Hastur

@Hastur:是的,这将使新变量立即可用和持久可用。
RedGrittyBrick

@hastur @RedGrittyBrick-有可能,但绝对不是Windows cmd中的oneliner。如果您安装Chocolatey,它的refreshenv.cmd实用程序为10行代码,基本上可以查询和刷新注册表项
-maoizm

SET命令是否显示动态环境变量?我试图找到在会议期间Microsoft的构建工具设置的所有内容,只是想掩盖我的基础。
Ungeheuer

2

为了获得干净的输出而没有多余的行和空格,请在以下命令中使用以下命令cmd.exe

用户环境变量:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I

全局(系统)环境变量:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I

它适用于Windows 7-10,并且很可能也适用于早期版本。


谢谢你 请注意,如果其中包含空格,它将丢弃部分值。因此,类似的注册表项VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools 显示为just VS140COMNTOOLS=C:\Program
金属版

@metal感谢您报告此极端情况。如果发现空格的解决方法,请随时编辑答案-我现在没有任何Windows计算机
-maoizm

我已经为此提交了更新。您或某些国防部长将需要批准它。
金属版

1

键入批处理命令:echo%temp%

如果“临时”环境变量包含“ H:\ Users \ amacm \ AppData \ Local”,则Windows将立即响应以下内容:

H:\ Users \ amacm \ AppData \ Local

如果没有名为“ temp”的环境变量,Windows将响应以下内容:

%temp%

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.