Как добавить пользовательские переменные среды в системную переменную PATH в Windows 7?

9

У меня есть две пользовательские переменные:

ANT_HOME установлен в% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME установлен в C: \ Program Files \ Java \ jdk1.6.0_23

И я хочу добавить эти пути к системной переменной, чтобы я мог получить доступ к исполняемым файлам в их папках bin. Я старался

PATH установлен в [другие пути];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Однако это не работает. Когда я открываю командную строку и эхо% PATH%, пользовательские переменные не раскрываются . Таким образом, путь просто показывает литерал;;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Кажется, я помню, что это нормально работало на моих старых системах Windows XP. Как мне установить это на Windows 7?

Майкл Прескотт
источник
Я только что нашел статью поддержки Microsoft с 2007 года, описывающую ошибку в Shell32.dll. Я добавил переменную PATH в свой список пользовательских переменных с установленным значением PATH% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin и решил проблему. Мне не нравится устанавливать его только для моего пользователя, но каким-то образом моя система представляет симптом этой старой ошибки, и другого лучшего ответа пока не вижу. Статья находится по адресу: support.microsoft.com/kb/329308
Майкл Прескотт

Ответы:

5

ОБНОВЛЕНИЕ № 2 - Теперь к актуальному вопросу: почему вложенные, созданные пользователем переменные не могут быть расширены?

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

Единственный возможный обходной путь, который я нашел, - это добавление уровня рекурсии переменных по уровню рекурсии. Это означает: попробуйте удалить все переменные, которые вы хотите вложить друг в друга (включая вызовы из PATH в ваши пользовательские переменные), а затем запустить с нуля. Определите ваши основные переменные (и т. Д. ANT-HOME), подтвердите, проверьте, развернут ли он, если это так, переходите к следующему уровню, проверьте ... вы поняли идею.

ОБНОВЛЕННЫЙ ОТВЕТ - Определение постоянных переменных среды с помощью CLI и GUI - Прокрутите вниз для получения исходного ответа

GUI метод:

В Windows 7 просто введите «system» в META-Prompt, и вы увидите запись «Редактировать переменные системной среды». Оттуда, нажмите «Переменные среды». Там вы можете либо отредактировать системную переменную PATH (нижний список), либо добавить / отредактировать новую переменную PATH в переменных среды пользователя.

Метод командной строки:

Для постоянного изменения переменных среды необходимо использовать команду SETX в командной строке Windows. В отличие от других версий Windows, он встроен в Windows 7. Его синтаксис сильно отличается от SET, но он также мощный. Вы должны быть немного осторожны, однако, легко запутать ваши переменные с помощью SETX.

  • По умолчанию вы меняете пользовательские переменные . У вас может быть переменная среды пользователя PATH, которая успешно сосуществует с системной переменной PATH. Если он еще не определен, сделайте это, набрав:SETX PATH yourpath

  • Вы также можете добавить значение в системную переменную PATH. Для этого сначала нужно вызвать командную строку с правами администратора. Для этого нажмите клавишу Meta (Windows), введите cmdи нажмите CTRL+ SHIFT+ ENTERи подтвердите диалоговое окно UAC.

Чтобы добавить новые значения в путь, теперь вы можете ввести

setx path "%path%;yournewpath" /m

Важно следовать этому синтаксису! Если вы сначала не включите% path%, все существующие значения пути будут потеряны и заменены только вашим новым путем. Переключатель / m в конце устанавливает переменную в системной среде.

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

На TechNet также есть полный справочник по SETX .

СТАРЫЙ ОТВЕТ Команда SET обновляет переменные только на время текущего сеанса командной строки.

Правильный синтаксис для добавления значения в переменную: «set [variable] =% [variable]%; [новое значение]`

Обратите внимание, что слева от знака равенства вы должны опустить знаки процента!

Источник: TechNet Справочник по командной строке для Windows Server

Tobias Plutat
источник
1
Спасибо за очень подробный ответ. Лично я всегда предпочитал метод GUI, потому что я думаю, что легче общаться с моей командой. Для ясности я выделил проблему, с которой я столкнулся в своем первоначальном посте. Пользовательские переменные не расширяются в Windows 7, как в Windows XP. Это больше не работает, или я должен исследовать настройки безопасности или других системных администраторов, которые могут блокировать обычное поведение?
Майкл Прескотт
Это очень хороший способ сказать: «Вы совершенно не относитесь к
делу
... а теперь мои 2 цента на актуальный вопрос. Смотрите новейший ответ редактировать.
Тобиас Плутат
1

В статье службы поддержки Microsoft, выпущенной еще в 2007 году ( номер 329308), описывается ошибка в Shell32.dll, которая является причиной этой проблемы. Решение состоит в том, чтобы добавить PATHпеременную в список пользовательских переменных, которая установлена ​​в

%ANT_HOME%\bin;%JAVA_HOME%\bin

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

Майкл Прескотт
источник