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

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

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

set

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

答案1

事情比微软有时表现出来的要复杂一些。

许多环境变量都存储在注册表中。这意味着您可以使用以下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%

答案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,并且很可能也适用于早期版本。

答案3

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

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

H:\用户\amacm\AppData\Local

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

%温度%

相关内容