13

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

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

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

8 ответов8

14

Вы могли бы использовать setx.

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

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

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

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

Олд-школа метод прямого управления переменными реестра с помощью команды 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, которая может спасти вашу машину, если Вы манипулируете переменными ENV достаточно, чтобы использовать их на лету.

1

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

1

Если вы не хотите использовать графический интерфейс (как в Панели управления, Система, Дополнительно, Переменные среды, 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, и это должно избежать требования входа / выхода из системы.

0

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

PATH c:\MyNewDirectory;%PATH%

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

0

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

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

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

0

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

0

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

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

А как насчет редактирования hklm/system/currentcontrolset001/control/ диспетчера сеансов / окружения: ключ пути? Но тот же ключ находится в 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .