Все немного сложнее, чем иногда делает 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%