Установка или изменение переменной окружения (для всей системы) в cmd.exe

Вопрос или проблема

Я ищу удобный способ добавления, изменения или удаления переменной окружения из командной строки. В частности, иногда я оказываюсь в ситуациях, когда мне нужно добавить несколько переменных в cmd.exe.

Я был бы благодарен, если бы кто-то показал мне способ изменения (то есть добавления нового каталога в) переменной %PATH% без графического интерфейса.

Изменение должно быть постоянным, а не только для сессии cmd.

Метод старой школы непосредственно для манипуляции переменными реестра с помощью команды reg был правильным. Вот как это сделать:

reg add HKCU\Environment /v PATH /d "%addonpath%;%path%" /f

Добавьте это в однострочный сценарий с именем apath.bat, который выглядит так:

@echo off
reg add HKCU\Environment /v PATH /d "%~dp0;%path%" /f

Затем вам просто нужно указать путь нового каталога, который вы добавляете при вызове сценария:

например: apath.bat %addonpath%

Хотя Хинч прав. Лучший способ сделать это, если вы используете Vista или выше, – это использовать команду SETX, которая предназначена для того, чтобы позволить нам распространять переменные окружения без риска непосредственной манипуляции реестром с помощью команды reg, что может спасти вашу машину, если вы достаточно манипулируете переменными окружения, чтобы использовать это на лету.

Вы можете использовать setx.

Пользовательская переменная:

SETX PATH "%PATH%;C:\MyDir"

Системная переменная:

SETX PATH "%PATH%;C:\MyDir" /M

Вы можете использовать ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun, чтобы указать на пакетный файл, что позволит вам вносить полустабильные изменения без углубления в таинственные диалоговые окна настроек.

Если вы не хотите использовать графический интерфейс (например, Панель управления, Система, Дополнительно, Переменные окружения, PATH), вы можете, вероятно, использовать REG для установки HKCU\Environment\PATH.

  • обновить %PATH%
  • REG ADD HKCU\Environment /v PATH /t REG_EXPAND_SZ /d "%PATH%" /f

/f принуждает перезапись существующего значения, поэтому вам не нужно будет интерактивно отвечать на вопрос.

Редактирование: %PATH% должно быть в кавычках.

Редактирование: Также стоит отметить, что это, вероятно, потребует перезагрузки или повторного входа, прежде чем изменения вступят в силу. В то время как изменение его в графическом интерфейсе вступает в силу немедленно (для новых сессий cmd.exe).

Ссылка: http://support.microsoft.com/kb/104011

Как указано в ссылке, если вы хотите написать код, вы можете отправить WM_SETTINGCHANGE, и это должно избежать необходимости входа/выхода.

Легко изменить путь в текущем процессе cmd.exe:

PATH c:\MyNewDirectory;%PATH%

Вы всегда можете выполнить HELP PATH для получения справки по команде PATH.

Для действительно постоянных изменений, охватывающих всю систему, вам действительно стоит использовать Панель управления системой (также известную как Мой компьютер -> Свойства -> Дополнительно -> Переменные окружения, для WinXP). Настройки там влияют на всю вашу систему, включая графические программы в оболочке Explorer.

Если вам нужны эти изменения только в оболочке cmd.exe, вы можете запустить пакетный файл, который устанавливает их каждый раз, когда вы открываете окно cmd.exe. Ответ Фоши упоминает ключ HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun, что кажется отличным вариантом — легко вносить небольшие изменения и повторно запускать из командной строки, если это необходимо. Но это не повлияет на графические окна или оболочку Explorer.

Я на самом деле удивлён, что Sysinternals не имеет подходящей утилиты для этого. Может быть, другая из PStools может это сделать?

Существует множество способов сделать это. REG ADD — один из них, или REG IMPORT (используя экспортированный .REG файл с другого компьютера). SETX /M — другой. Вы также можете развернуть это с помощью настроек групповой политики (самый простой способ для большого количества компьютеров).

Ещё одна мысль, не упомянутая здесь, создайте скрипт autohotkey, который запустит панель управления и введет её за вас. Это хорошо работает, если вы уже являетесь пользователем AHK 🙂

https://autohotkey.com/board/topic/63210-modify-system-path-gui/

А что насчет редактирования ключа hklm/system/currentcontrolset001/control/session manager/environment: path? Но тот же ключ находится в hklm/system/currentcontrolset002 и hklm/system/currentcontrolset. Кажется, что это может быть корректно, согласно здесь: https://stackoverflow.com/questions/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install

Ответ Гэрета обновлён:
Проверено в cmd. Нужно запускать от имени администратора. (использовалось на Windows 11)

Установка переменных окружения на конкретный путь

setx MYVIDEOS "C:\Videos"

Установка системных переменных

setx MYVIDEOS "C:\Videos" /M

Установка с CurrentUser

setx MYVIDEOS "%USERPROFILE%\Videos"

Ответ или решение

Изменение или установка системных переменных окружения в Windows через командную строку (cmd.exe) — это задача, которая может быть выполнена различными способами. В этом ответе мы подробно рассмотрим, как добавить, изменить или удалить переменные окружения, включая переменную PATH, используя как команду SETX, так и прямые манипуляции с реестром.

1. Использование команды SETX

Команда SETX предназначена для установки переменных окружения и является безопасным способом изменения их значений без прямого редактирования реестра. Она позволяет задавать как пользовательские, так и системные переменные.

Чтобы добавить значение в переменную PATH:

Для пользовательской переменной:

SETX PATH "%PATH%;C:\MyNewDirectory"

Для системной переменной:

SETX PATH "%PATH%;C:\MyNewDirectory" /M

Важно: Изменения, введенные с помощью SETX, вступают в силу только в новых сеансах командной строки.

2. Прямое редактирование реестра

Если необходимо произвести изменения на уровне реестра, можно использовать команду REG ADD. Этот метод подходит для более опытных пользователей и требует аккуратности, поскольку некорректные изменения могут повлиять на стабильность системы.

Для добавления новой директории к переменной PATH:

REG ADD HKCU\Environment /v PATH /t REG_EXPAND_SZ /d "%PATH%;C:\MyNewDirectory" /f

Параметры:

  • /v указывает имя переменной (в данном случае, PATH).
  • /t указывает тип данных (например, REG_EXPAND_SZ).
  • /d указывает значение, которое необходимо установить.
  • /f принудительно перезаписывает существующее значение без запроса подтверждения.

Для системных переменных используйте:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v PATH /t REG_EXPAND_SZ /d "%PATH%;C:\MyNewDirectory" /f

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

3. Удаление переменной окружения

Чтобы удалить переменную окружения с помощью SETX, можно использовать следующую команду:

SETX PATH "" /M

Это очистит значение переменной PATH, однако рекомендуется использовать команду REG DELETE для полного удаления переменной из реестра:

REG DELETE HKCU\Environment /v PATH /f

4. Использование Autorun в реестре

Для автоматического выполнения скриптов при открытии командной строки можно использовать ключ реестра:

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun

Запишите туда путь к вашему скрипту, который будет выполнен автоматически.

Заключение

Использование командной строки для изменения системных переменных окружения в Windows предоставляет гибкость и контроль. Команда SETX является предпочтительным вариантом для большинства пользователей, так как она более безопасна и не требует знания сложной структуры реестра. Однако в случаях, когда требуется более тонкая настройка или вы хотите работать на уровне системы, использование REG команд также имеет свои преимущества.

Оцените материал
Добавить комментарий

Капча загружается...