Добавление каталога в переменную среды PATH в Windows



в операционных системах Windows NT я попытался добавить этот каталог в свою систему PATH переменные среды:



C:xamppphp


поэтому я добавил этот каталог с помощью "Мой Компьютер" > "Свойства" > "дополнительно" > "Переменные среды" > "путь". Я сохранил его, но когда я набрал:



> path


на моей консоли он не показывает никаких добавленных "C:xamppphp-каталог



> PATH=D:Program
> FilesAutodeskMaya2008bin;C:Ruby192bin;C:WINDOWSsystem32;C
> :WINDOWS;C:WINDOWSSystem32Wbem;C:PROGRA~1DISKEE~2DISKEE~1;c:Program
> Fil esMicrosoft SQL ServerToolsbinn;C:Program
> FilesQuickTimeQTSystem;D:P rogram FilesTortoiseSVNbin;D:Program
> FilesBazaar;C:Program FilesAndroidan droid-sdktools;D:Program
> FilesMicrosoft Visual StudioCommonToolsWinNT;D:P rogram
> FilesMicrosoft Visual StudioCommonMSDev98Bin;D:Program
> FilesMicroso ft Visual StudioCommonTools;D:Program FilesMicrosoft
> Visual StudioVC98bin


у меня есть два вопроса:




  1. почему это произошло? Быть там что-то я сделал не так?


  2. как я могу добавить каталоги в моем PATH переменная с помощью консоли или программно (через пакетный файл)?


4510   14  

14 ответов:

Это только изменяет реестр. Процесс не будет использовать эти значения, пока он не будет запущен после это изменение и не наследует природу своих родителей.

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

  • откройте окно консоли после изменения системного пути с помощью панели управления или системных настроек.

или

  • set PATH=%PATH%;C:\xampp\php

    в открывшемся окне команд.

    разбив его вниз:

    set PATH=%PATH%;  -- takes the current path and sets PATH to it.
    C:\xampp\php      -- Adds this directory to the path, because of 'set PATH' this is added to the path
    

внимание: не пропустите создание резервной копии перед использованием этого метода
вы можете потерять данные в свой %PATH%, или добавить нерелевантный контент слияние из системных переменных
другими словами, не слепо копировать/вставить это. Используйте с осторожностью.


в Windows 7 и Windows 8 мы можем постоянно установите путь из командной строки с помощью . Чтобы добавить git к "Путь":

setx path "%path%;C:\Program Files (x86)\Git\bin\"

обратите внимание, что эта команда может обрезать путь, который вы передаете, до 1024 символов, теряя что-либо помимо этого. В общем, обязательно используйте cmd.exe, а не command.com. Оба предоставляют командную строку. cmd.exe новее, и у него меньше ограничений. command.com старше; он имеет ограничения, такие как размер пути.

в семействе Windows 8 (8 & 8.1), вы должны запустить командную строку с правами администратора.

Edit: как прокомментировал @FF_Dev

из-за использования %PATH% переменная, эта команда объединит системные переменные среды с пользовательскими.

вам не нужны set или setx команда, просто откройте терминал и введите:

PATH

это показывает текущее значение переменной PATH. Теперь вы хотите добавить в каталог? Просто введите:

PATH %PATH%;C:\xampp\php

если по какой-либо причине вы хотите очистить переменную PATH (нет путей вообще или удалить все пути в ней), введите:

PATH ;

обновление

как Даниал Уилсон отметил в комментарии ниже, он устанавливает путь только в текущем сессия. Для установки пути постоянно используйте setx но имейте в виду, хотя это устанавливает путь постоянно, но не в текущем сеансе, поэтому вам нужно запустить новую командную строку, чтобы увидеть изменения, подробнее здесь.

чтобы проверить, существует ли переменная среды или увидеть ее значение, используйте ECHO commnad:

echo %YOUR_ENV_VARIABLE%

в этот век PowerShell я бы редактировал путь так:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")

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

[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")

в скрипте PowerShell, вы, возможно, захотите, чтобы проверить наличие вашего C:\xampp\php перед добавлением в PATH (в случае, если он был ранее добавлен). Вы можете обернуть его в if условное.

Итак, собирая все это вместе:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
    [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}

поздно на вечеринку - но удобно, если вы уже находитесь в каталоге, который хотите добавить в PATH.

set PATH=%PATH%;%CD%

edit: согласно комментарию-работает со стандартным Windows cmd, но не в powershell.

для powershell the %CD% эквивалентной [System.Environment]::CurrentDirectory

Безопасный SETX

кивать на все комментарии на @nafscript initial SETX ответ.

  • SETX по умолчанию обновит ваш пользователей путь.
  • SETX ... /M обновить система путь.
  • %PATH% содержит системный путь с добавлением пользовательского пути

предупреждения

  1. резервное копирование PATH -SETX будет усеките ваш мусор длиной более 1024 символов
  2. не называй SETX %PATH%;xxx - добавляет системный путь в путь пользователя
  3. не называй SETX %PATH%;xxx /M - добавляет путь пользователя в системный путь
  4. чрезмерное использование пакетных файлов может привести к слепоте1

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

Переменные Пользователя:

HKCU\Environment

Системные Переменные:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

инструкция по применению

добавить

append_user_path.cmd

@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1

добавить в систему PATH

append_system_path.cmd. должен быть запущен от имени администратора.

(это в основном то же самое, за исключением другого Key и SETX /M модификатор)

@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M

варианты

наконец, есть потенциально улучшенная версия под названием SETENV рекомендуется на странице ss64 SETX, которая разбивает настройку переменных среды пользователя или системы.


1. Не совсем верно

Что делать, если вы ошиблись путь с помощью setx? Лучший способ-просто через windows U. I. Панель Управления->Все Элементы Панели Управления->Система->Расширенные Настройки Системы->Переменные Среды

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

  • изменения командной строки не будут постоянными, будут потеряны при закрытии консоли.
  • пути работает, как отелей.
  • вы можете переопределить другие уже включенные исполняемые файлы. Например, если у вас уже есть другая версия на вашем пути, и вы хотите добавить другую версию без внесения постоянного изменения в путь, вы должны поместить каталог в начале команды.

для переопределения уже включены исполняемые файлы;

set PATH=C:\xampp\php;%PATH%;

помимо всех ответов, если вы хотите хороший графический инструмент для редактирования переменных среды windows, вы можете использовать Быстрый Редактор Среды

попробуйте! его безопасно использовать и потрясающе!

http://www.rapidee.com/en/

по пункту 2 Я использую простой пакетный файл, который заполняет PATH или другие переменные окружения для меня. Таким образом, загрязнение переменных среды по умолчанию отсутствует. Этот пакетный файл доступен отовсюду, поэтому я могу ввести:

c:\>mybatchfile
-- here all env. are available
c:\>php file.php

Вы можете проверить более подробную информацию об этом простой подход здесь.

проверка вышеуказанных предложений в Windows 10 LTSB и с проблеском на контурах "справка" (которые можно просмотреть при вводе " command/?'on the cmd), привел меня к вывод о том, что команда PATH изменяет значения системных переменных среды Path только для текущего сеанса, но после перезагрузки все значения сбрасываются по умолчанию - так же, как и до использования команды PATH.

С другой стороны, использование команды SETX с правами администратора-это путь более мощный, он изменяет эти значения навсегда (или, по крайней мере, до следующего использования этой команды или до следующего манипулирования этими значениями вручную GUI... ).

но для ясности я подумал, что совместное использование здесь лучшее использование синтаксиса SETX это сработало для меня может помочь кому-то однажды:

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

где любой знак равенства ' = ' следует избегать, и не беспокойтесь пространства! нет необходимости вставлять дополнительные кавычки для пути что содержит пробелы внутри него-знак разделения'; ' выполняйте задание.

ключевое слово PATH, которое следует за SETX, определяет, какой набор значений должен быть изменен среди возможных значений переменных среды системы, а %PATH% (путь слова, окруженный знаком процента) внутри кавычек, говорит ОС оставить существующие значения пути как они есть и добавить следующий путь (тот, который следует за знаком разделения ';' ) к существующим значениям.

HTH

лучшей альтернативой панели управления является использование этой бесплатной программы из sourceforge под названием Pathenator:

https://sourceforge.net/projects/pathenator/

однако, это только РАБОЧИЕ для системы, которая имеет Dot.Net 4.0 или выше, такие как windows 7,8 или 10.

в командной строке вы говорите Cmd использовать командную строку проводника, предваряя ее start.

так start Yourbatchname.

обратите внимание, вы должны зарегистрироваться, как если бы его имя batchfile.exe.

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

это общий reg-файл. Скопируйте приведенные ниже строки в новый текстовый документ и сохраните его как anyname.рег. Отредактируйте его с помощью своих программ или документов.

в пути используйте \ для разделения имен папок в ключевых путях, поскольку regedit использует один \ для разделения его ключевых имен. Все reg файлы начинаются с REGEDIT4. Точка с запятой превращает строку в комментарий. Символ @ означает присвоение значения ключу, а не именованному значению.

файл не должен существовать. Это может быть использовано для набора слова.exe, чтобы открыть Winword.исполняемый.

введя start batchfile начнется iexplore.исполняемый.

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\Program Files\Internet Explorer\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\Program Files\Microsoft Office\Office\"

вам уже говорили о пути в другом ответе. Также смотрите doskey /? для cmd макросов (они работают только при вводе).

вы можете запускать команды запуска для CMD. Из Windows Recource Kit Техническая Справка

Автозагрузка

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

описание

содержит команды, которые выполняются при каждом запуске Cmd.исполняемый.

Comments

    Ничего не найдено.