2

CMD команды:

setx SOMEVARIABLE "newpath" /M
setx SOMEVARIABLE "%SOMEVARIABLE%;newpath2" /M

Ожидаемый выход на ECHO %SOMEVARIABLE% :

newpath;newpath2

Фактический вывод:

%SOMEVARIABLE%

Фактическое значение сохранено (Из Системных свойств-> GUI переменных среды):

%SOMEVARIABLE%;newpath2

Единственный способ получить ожидаемый результат - перезапускать командную строку каждый раз, когда я изменяю переменную среды. Я использую эту команду для автоматизации добавления значения переменной окружения несколько раз в течение одного и того же процесса.

  1. Почему переменная окружения не обновляется в cmd без перезапуска?
  2. Можно ли получить обновленное значение% SOMEVARIABLE% без перезапуска командной строки?

1 ответ1

4

Проблема в том, что setx изменяет глобальную среду, а не локальную. Поэтому вам нужно перезапустить командную строку, чтобы получить изменения.

У вас есть два варианта:

  • Используйте другой инструмент, который изменяет глобальную среду и локальную среду
  • Создайте пакетный файл, который делает оба и использует это:

    ::setenv.bat
    @echo off
    set %1=%2
    setx %1 %2 %3
    

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