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

Я пытаюсь добавить C:\xampp\php в системную PATH среды PATH в Windows.

Я уже добавил его с помощью диалогового окна "Переменные среды".

Но когда я набираю в моей консоли:

C:\>path

он не показывает новый C:\xampp\php:

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

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

  1. Почему это случилось? Что-то я не так сделал?
  2. Кроме того, как мне добавить каталоги в переменную PATH используя консоль (и программно, с командным файлом)?

Ответ 1

Это только изменяет реестр. Существующий процесс не будет использовать эти значения. Новый процесс будет делать это, если он запущен после этого изменения и не наследует старую среду от своего родителя.

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

Ответ 2

Опция 1

После изменения PATH с помощью графического интерфейса пользователя закройте и снова откройте окно консоли.

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

Вариант 2

Выполните эту команду в открывшемся окне:

set PATH=%PATH%;C:\your\path\here\

Эта команда добавляет C:\your\path\here\ к текущей PATH.

Разбивая это:

  • set - команда, которая изменяет переменные среды cmd только для текущего сеанса cmd; другие программы и система остаются без изменений.
  • PATH= - означает, что PATH - это переменная среды, которая будет временно изменена.
  • %PATH%;C:\your\path\here\ - часть %PATH% расширяется до текущего значения PATH, и ;C:\your\path\here\ присоединяется к нему. Это становится новым PATH.

Ответ 3

  ВНИМАНИЕ: Это решение может нанести ущерб вашей PATH и стабильности вашей системы. Как побочный эффект, он объединит ваш пользовательский и системный PATH и урежет PATH до 1024 символов. Эффект этой команды необратим. Сначала сделайте резервную копию PATH. Смотрите комментарии для получения дополнительной информации.

Don't blindly copy-and-paste this. Use with caution.

Вы можете навсегда добавить путь к PATH с помощью команды setx :

setx /M path "%path%;C:\your\path\here\"

Снимите флаг /M, если вы хотите установить пользователя PATH вместо системы PATH.

Примечания:

  • Команда setx доступна только в Windows 7 и более поздних версиях.
  • Эту команду следует запускать из командной строки с повышенными привилегиями.

  • Если вы хотите изменить его только для текущего сеанса, используйте set.

Ответ 4

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

PATH

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

PATH %PATH%;C:\xampp\php

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

PATH ;

Обновление

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

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

echo %YOUR_ENV_VARIABLE%

Ответ 5

В этом возрасте, используя PowerShell, я бы добавил каталог в PATH следующим образом:

$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")
}

Еще лучше, можно создать универсальную функцию. Просто укажите каталог, который вы хотите добавить:

function AddTo-Path{
param(
    [string]$Dir
)

    if( !(Test-Path $Dir) ){
        Write-warning "Supplied directory was not found!"
        return
    }
    $PATH = [Environment]::GetEnvironmentVariable("PATH")
    if( $PATH -notlike "*"+$Dir+"*" ){
        [Environment]::SetEnvironmentVariable("PATH", "$PATH;$Dir", "Machine")
    }
}

Вы могли бы сделать вещи лучше, сделав некоторую полировку. Например, используя Test-Path, чтобы подтвердить, что ваш каталог действительно существует.

Ответ 6

Безопасный SETX

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

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

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

  • Резервное копирование PATH - SETX приведет к усечению вашего мусора дольше 1024 символов
  • Не вызывать SETX %PATH%;xxx - добавляет системный путь в путь пользователя
  • Не вызывать SETX %PATH%;xxx /M - добавляет пользовательский путь в системный путь
  • Чрезмерное использование пакетного файла может вызвать слепоту 1

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

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

HKCU\Environment

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

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

Инструкции по использованию

Добавить пользователю PATH

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. Должен запускаться как admin.

(это в основном то же самое, за исключением другого 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. Не строго верно

Ответ 7

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

set PATH=%PATH%;%CD%

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

Для степенной оболочки эквивалент %CD% равен [System.Environment]::CurrentDirectory

Ответ 8

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

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

Ответ 9

Помимо всех ответов, если вы хотите, чтобы хороший инструмент графического интерфейса для редактирования переменных окружения Windows, вы можете использовать Rapid Environment Editor

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

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

Ответ 10

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

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

установить PATH = C:\xampp\php;% PATH%;

Ответ 11

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

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

Ответ 12

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

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

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

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

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

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

НТН

Ответ 13

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

So start Yourbatchname.

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

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

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

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

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

Ввод start batchfile запустит iexplore.exe.

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.exe.

Ответ 14

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

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

Тем не менее, это только рабочие для системы с Dot.Net 4.0 или больше, такие как окна 7,8 или 10.

Ответ 15

Если вы запустите команду cmd, она обновит все системные переменные для этого командного окна.

Ответ 16

использовать патч от gtools

он делает все интуитивно, например:

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

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

Ответ 17

  1. Я установил PHP в то время. Извлеченный php-7 ***. Zip в C:\php \
  2. path >C:\path-backup.txt моей текущей переменной среды PATH: запустите cmd и выполните команду: path >C:\path-backup.txt

  3. Получить мое текущее значение пути в файл C:\path.txt (таким же образом)

  4. Измените path.txt (конечно, длина моего пути больше 1024 символов, Windows работает несколько лет)
    • Я удалил дубликаты путей, например, 'C:\Windows; или C:\Windows\System32; или C:\Windows\System32\Wbem; - У меня есть дважды.
    • Удалите также пути к удаленным программам. Пример: C:\Program Files\NonExistSoftware;
    • Таким образом, длина моего пути <1024 :)))
    • в конце строки пути добавьте; C:\php\
    • Скопируйте значение пути только в буфер с двойными кавычками! Пример: "C:\Windows; ****; C:\php \" Нет PATH = должно быть там !!!
  5. Откройте Windows PowerShell от имени администратора.
  6. Команда запуска:

setx path "Here you should insert string from buffer (new path value)"

  1. Перезапустите свой терминал (я использую "Far manager") и проверьте: php -v

Ответ 18

Как бы банально это ни было, мне пришлось перезапустить Windows, когда столкнулся с этой проблемой.

Я использую Windows 7 x64. Я сделал ручное обновление системной переменной PATH. Это работает нормально, если я запускаю cmd.exe из меню статистики. Но если я наберу "cmd" в адресной строке Windows Explorer, он, похоже, загрузит PATH из другого места, где не было моих изменений вручную.

(Чтобы избежать сомнений - да, я несколько раз закрывал и запускал cmd, прежде чем перезапустить, и это не помогло.)