Когда я устанавливаю переменную окружения envir с помощью команды setx , кажется, что она на самом деле не «устанавливается» в окружении.

setx envir "windows"
if 1==1 (
    setx envir "unix"
)
echo %envir%
set

Команда set отображает список переменных среды, но не отображает переменную, которая была установлена в предыдущей строке.

2 ответа2

1

В вашем примере переменная среды %ENVIR% установлена в "windows ». Это хранится в пользовательских переменных среды в реестре Windows . Изменение не отражается напрямую в средах активных в настоящее время процессов.

Чтобы увидеть этот новый параметр с помощью команды set , вам нужно открыть новый командный блок с помощью cmd.exe . Текущее командное поле не перечитывает автоматически измененные настройки из реестра. Вы также можете использовать системный элемент управления SYSTEM и посмотреть в разделе « Extended Properties / Environment:

0

Аксель прав.

setx сохраняет переменную в реестре, но это изменение не отражается в среде ЛЮБОЙ запущенной программы (включая текущую).

Вот некоторые важные части вывода setx /?:

C:\>setx /?

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session. 

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