У меня есть две пользовательские переменные:
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?
windows-7
environment-variables
Майкл Прескотт
источник
источник
Ответы:
ОБНОВЛЕНИЕ № 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.Чтобы добавить новые значения в путь, теперь вы можете ввести
Важно следовать этому синтаксису! Если вы сначала не включите% path%, все существующие значения пути будут потеряны и заменены только вашим новым путем. Переключатель / m в конце устанавливает переменную в системной среде.
Обратите внимание, что вам придется вызвать новую командную строку, чтобы использовать вашу новую переменную.
На TechNet также есть полный справочник по SETX .
СТАРЫЙ ОТВЕТ Команда SET обновляет переменные только на время текущего сеанса командной строки.
Правильный синтаксис для добавления значения в переменную: «set [variable] =% [variable]%; [новое значение]`
Обратите внимание, что слева от знака равенства вы должны опустить знаки процента!
Источник: TechNet Справочник по командной строке для Windows Server
источник
В статье службы поддержки Microsoft, выпущенной еще в 2007 году ( номер 329308), описывается ошибка в Shell32.dll, которая является причиной этой проблемы. Решение состоит в том, чтобы добавить
PATH
переменную в список пользовательских переменных, которая установлена вЭто обошло проблему. Мне не нравится устанавливать его только для моего пользователя, но почему-то моя система демонстрирует симптомы этой старой ошибки, и другого лучшего ответа пока не вижу.
источник