Установка переменных среды в cmd не имеет никакого эффекта [дубликат]

1

На этот вопрос уже есть ответ здесь:

Я пытаюсь настроить пути к инструментам VS для запуска их в командной строке https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx

я бегу vcvarsall x64 из командной строки с повышенными правами и проверьте содержимое INCLUDE переменная:

enter image description here

Затем я закрываю командную строку, открываю ее снова и проверяю INCLUDE переменная:

enter image description here

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

Я использую Win 8.1, если это имеет значение.

riv
источник

Ответы:

1

Это потому, что запускаемые пакетные файлы используют Set установить переменные среды ( C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat это то, что запускается, когда вы бежите vcvarsall x64 ).

Но Set только устанавливает переменные для текущего сеанса командной строки. Вам нужно использовать Setx чтобы он "держался" между сеансами командной строки.

Для получения дополнительной информации, возможно, проверьте эти другие вопросы SU и ответы:

Редактировать после комментариев:

«Но заданные команды были в скрипте по умолчанию»

VCVarsAll предназначен для запуска среды, в которой вы собираетесь выполнить отдельную сборку / действие, а не для их постоянной установки.

Visual Studio устанавливает специальные записи «командной строки» для доступа к инструментам (из вашей ссылки: «... и затем выберите одну из командных подсказок встроенного инструмента или кросс-инструмента.»), И эти специальные ярлыки командной строки запускают / пакетный файл, чтобы убедиться, что все установлено правильно, когда вы используете эти ярлыки.

Вы можете скопировать эти ярлыки с вашими собственными ...

Сделайте новый ярлык для cmd /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64, который запустит пакетный файл (используя x64 в качестве параметра среды), а затем оставит окно командной строки открытым.

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

Ƭᴇcʜιᴇ007
источник
Но set команды были в скрипте по умолчанию ... вы имеете в виду, что мне нужно отредактировать весь скрипт, чтобы он работал (setx также имеет немного другой синтаксис, кажется)? Попытка запустить его локально также проблематична, потому что я использую FAR-менеджер, и он запускает сценарии bat в своем собственном процессе, поэтому все изменения теряются после его завершения, поэтому мне приходится использовать raw CMD для всей моей работы, что очень неудобно ,
riv
0

Да, вы можете извлечь среду в файл:

cmd /C "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && set > d:\t.txt

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

Sergei
источник