Все немного сложнее, чем иногда делает 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%
setx test removeme
что-то,set test %test%
чтобы вы могли перечислить все переменные с простымset
? Я думал , что это возможно реализовать команды / пакетный сценарий , чтобы сделать все они явно по запросу ...