9

В Windows (например, версия 10) вы можете перечислить переменные среды, используя команду

set

Как вы перечисляете только переменные среды, которые являются одинаковыми для всех пользователей, или только переменные среды, которые предназначены для текущего пользователя или сеанса?

2 ответа2

10

Все немного сложнее, чем иногда делает Microsoft.

Многие переменные среды хранятся в реестре. Это означает, что вы можете запросить их, используя команду 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%
0

Для чистого вывода без лишних строк и пробелов используйте следующие команды в cmd.exe:

Переменные среды пользователя:

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

Глобальные (системные) переменные среды:

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

Он работает в Windows 7-10 и, скорее всего, в более ранних версиях

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .