Задать системную переменную среды из пакетного файла Windows?

195

Можно ли установить переменную среды на системном уровне из командной строки в Windows 7 (или даже XP в этом отношении). Я бегу из командной строки с повышенными правами.

Когда я использую setкоманду ( set name=value), переменная окружения кажется действительной только для сеанса командной строки.

Santhosh
источник

Ответы:

179

Средства поддержки XP (которые можно установить с компакт-диска XP) поставляются с программой под названием setx.exe:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

Я думаю, что Windows 7 на самом деле поставляется setxкак часть стандартной установки.

Хью Аллен
источник
7
Windows 7 (может быть, Vista уже) имеет стандарт setx, с небольшими изменениями? -iфлаг отсутствует, и только при запуске setx /?отображаются все справки + примеры
stijn
3
Помните, что вы всегда можете проверить, есть ли у вас эта программа на вашем пути, набрав, whereа затем имя программы (так что в этом случае where setx.exeпри тестировании этого на коробке Server 2008 и Server 2008SP2 я обнаружил, что в обоих случаях она существовала при%windir%\System32\setx.exe
aolszowka
2
@stijn - версия Win7 также официально изменила флаг-интро -с косой черты /. Тем не менее, похоже, что -версия все еще работает.
TED
2
Кажется, существует ограничение длины 1024 для содержимого переменной
setx
Setx, предоставляемый средствами поддержки XP SP2, требует косой черты, /а тире -не работает. setx variable value /m
Кит
137

Простой пример того, как установить JAVA_HOME setx.exeв командной строке:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Это установит переменную окружения "JAVA_HOME" для текущего пользователя. Если вы хотите установить переменную для всех пользователей, вы должны использовать опцию "-m". Вот пример:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Примечание : вы должны выполнить эту команду от имени администратора.

Примечание . Обязательно запустите команду setx из окна администратора командной строки.

Миндаугас Хараминас
источник
7
также обратите внимание, что некоторым инструментам не нравятся пробелы в JAVA_HOME, поэтому стоит использовать Progra~1вот так: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael
1
Где это было всю мою жизнь.
Филипп Рего
20

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

Используйте следующую последовательность, чтобы напрямую установить ее и в процессе установки (у меня отлично работает в скриптах, которые выполняют некоторые инициализации после установки глобальных переменных) :

SET XYZ=test
SETX XYZ test
Антон Ф.
источник
Спасибо, это сводило меня с ума! CMD.EXE отчаянно нуждается в обновлении, чтобы вести себя как обычная консоль ...!
Сальвадор Валенсия
Я не понимаю: где я запускаю эти 2 строки?
Даниэль
1
Вы также можете выполнить команду refreshenvпосле использования setx, чтобы использовать новые переменные.
BrianHVB
@BrianHVB refreshenvне распознается как команда. Вы делаете это в cmdили powershell? (EDIT: протестирован в обеих на самом деле, не работает либо консоли)
bigp
@ ой, ой, ты прав. Это команда, которая добавляется, когда установлен Chocolatey. У меня есть шоколад на всех моих системах и не понимал, пока я не посмотрел его.
BrianHVB
2

Для XP я использовал (бесплатное / бесплатное программное обеспечение) инструмент под названием «RAPIDEE» (Rapid Environment Editor), но SETX определенно достаточно для Win 7 (я не знал об этом раньше).

FractalSpace
источник
2

Системные переменные могут быть установлены через CMD и реестр. Например. запрос reg "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v PATH

Все обычно используемые коды CMD и системные переменные приведены здесь: Установите системные переменные среды Windows с помощью CMD .

Откройте CMD и введите Set

Вы получите все значения системной переменной.

Введите set java, чтобы узнать подробности пути java, установленного в вашей оконной ОС.

Химаншу Сингх
источник
1

На всякий случай, если вам понадобится удалить переменную, вы можете использовать SETENV от Vincent Fatica, доступной по адресу http://barnyard.syr.edu/~vefatica . Не совсем недавно ('98), но все еще работает на Windows 7 x64.

преждевременное прекращение
источник
5
setx позволяет также удалять, устанавливая значение пустым
Steve Lloyd