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

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

C:xamppphp

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

> path

к моей консоли он не показывает никаких добавленных "C:xamppphp-директория!--6-->

> 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 переменная с помощью консоли или программно (через пакетный файл)?

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: As прокомментировал @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")
}

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

set PATH=%PATH%;%CD%

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

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


Безопасный SETX

кивните на все комментарии к инициал@Nafscript SETX ответ.

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

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

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

на страница 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. Панель Управления->Все Элементы Панели Управления->Система->Расширенные Настройки Системы->Переменные Среды

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


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

переопределить уже включенное исполняемые;

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


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

попробуйте! его безопасно использовать и удивительным!

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


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

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

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


проверка вышеуказанных предложений в Windows 10 LTSB и с проблеском на контурах "справка" (которые можно просмотреть при вводе команды/?'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. Точка с запятой превращает строку в комментарий. Символ @ означает присвоение значения ключу, а не именованному значению.

файл не должен существовать. Это можно использовать для установки Word.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.исполняемый.