Dodawanie katalogu do zmiennej środowiskowej PATH w systemie Windows

Próbuję dodać C:\xampp\php do zmiennej środowiskowej systemu PATH w systemie Windows.

Dodałem go już za pomocą okna dialogowego zmienne środowiskowe.

Ale kiedy wpiszę do konsoli:

C:\>path

Nie pokazuje nowego katalogu 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

Mam dwa pytania:

    Dlaczego to się stało? Czy jest coś, co zrobiłem źle?
  1. również, jak dodać katalogi do mojej zmiennej PATH za pomocą konsoli (i programowo, z plikiem wsadowym)?
Author: Peter Mortensen, 2012-03-03

18 answers

To tylko modyfikuje rejestr. Istniejący proces nie będzie używał tych wartości. Nowy proces zrobi to, jeśli zostanie uruchomiony poTa zmiana i nie dziedziczy starego środowiska po swoim rodzicu.

Nie podano sposobu rozpoczęcia sesji konsoli. Najlepszym sposobem na zapewnienie tego jest wyjście z powłoki poleceń i ponowne uruchomienie jej. Następnie powinien dziedziczyć zaktualizowaną zmienną środowiskową PATH.

 157
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:47:47

Opcja 1

Po zmianie PATH Z GUI, zamknij i ponownie otwórz okno konsoli.

To działa, ponieważ tylko programy uruchomione po zmianie będą widzieć nową PATH.

Opcja 2

Wykonaj to polecenie w otwartym oknie poleceń:

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

To polecenie dodaje {[3] } do bieżącego PATH.

Rozbicie:

  • set – polecenie, które zmienia tylko zmienne środowiskowe cmd dla bieżącej sesji cmd ; inne programy i system nie mają wpływu.
  • {[6] – - oznacza, że {[1] } jest zmienną środowiskową, która ma być tymczasowo zmieniona.
  • {[8] – - część %PATH% rozszerza się do bieżącej wartości PATH, A {[11] } jest z nią konkatenowana. To staje się nowym PATH.
 1000
Author: JimR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-13 20:02:10

Ostrzeżenie: To rozwiązanie może być destrukcyjne dla twojej ścieżki i stabilności Twojego systemu. Jako efekt uboczny, połączy ścieżkę użytkownika i systemową i skróci ścieżkę do 1024 znaków. Efekt tego polecenia jest nieodwracalny. Najpierw zrób kopię zapasową ścieżki. Więcej informacji można znaleźć w komentarzach.

Nie kopiuj i wklej tego na ślepo. Stosować ostrożnie.

Możesz na stałe dodać ścieżkę do PATH za pomocą setx polecenie:

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

Usuń flagę /M, Jeśli chcesz ustawić użytkownika PATH zamiast systemu PATH.

Uwagi:

  • polecenie setx jest dostępne tylko w Windows 7 i nowszych wersjach.
  • Powinieneś uruchomić to polecenie z podwyższonego wiersza polecenia.

  • Jeśli chcesz zmienić go tylko dla bieżącej sesji, użyj set.

 217
Author: Nafscript,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-10 16:49:02

Nie potrzebujesz żadnego set ani setx polecenia. Po prostu otwórz terminal i wpisz:

PATH

Pokazuje bieżącą wartość zmiennej PATH. Chcesz dodać katalog do niego? Typ prosty:

PATH %PATH%;C:\xampp\php

Jeśli z jakiegoś powodu chcesz wyczyścić zmienną PATH (w ogóle nie ma ścieżek lub usunąć wszystkie ścieżki w niej), wpisz:

PATH ;

Update

Jak zauważył Danial Wilson w komentarzu poniżej, ustawia ścieżkę tylko w bieżącej sesji. Aby ustawić ścieżkę na stałe, użyj setx, ale bądź świadomy, chociaż ustawia ścieżkę na stałe, ale nie w bieżącej sesji, więc musisz uruchomić nową linię poleceń, aby zobaczyć zmiany. Więcej informacji jest tutaj .

Aby sprawdzić, czy zmienna środowiskowa istnieje lub widzi jej wartość, użyj polecenia ECHO :

echo %YOUR_ENV_VARIABLE%
 75
Author: zar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 11:46:29

Zamiast tego użyłbym PowerShella!

Aby dodać katalog do PATH za pomocą PowerShell, wykonaj następujące czynności:

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

Aby ustawić zmienną dla wszystkich użytkowników, ostatnia linia powinna wyglądać następująco:

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

W skrypcie PowerShell możesz sprawdzić obecność swojego C:\xampp\php przed dodaniem do ścieżki (na wypadek, gdyby została ona wcześniej dodana). Możesz go zawinąć w if warunkowe.

Więc składając to wszystko razem:

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

Jeszcze lepiej, można Utwórz funkcję generyczną. Wystarczy podać katalog, który chcesz dodać:

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

    if( !(Test-Path $Dir) ){
        Write-warning "Supplied directory was not found!"
        return
    }
    $PATH = [Environment]::GetEnvironmentVariable("PATH", "Machine")
    if( $PATH -notlike "*"+$Dir+"*" ){
        [Environment]::SetEnvironmentVariable("PATH", "$PATH;$Dir", "Machine")
    }
}
Możesz to poprawić, polerując. Na przykład, używając Test-Path, aby potwierdzić, że katalog rzeczywiście istnieje.
 51
Author: Ifedi Okonkwo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-20 12:36:01

Safer SETX

Ukłon w stronę Wszystkich komentarzy @ Nafscript ' s initial SETX odpowiedź .

  • SETX domyślnie zaktualizuje ścieżkę użytkownika .
  • SETX ... /M zaktualizuje ścieżkę systemu.
  • %PATH% zawiera ścieżkę systemową z dołączoną ścieżką użytkownika

Ostrzeżenia

  1. Backup your PATH - SETX będzie obcinać Twoje śmieci dłużej niż 1024 znaków
  2. nie dzwoń SETX %PATH%;xxx - dodaje ścieżkę systemową do ścieżki użytkownika
  3. nie dzwoń SETX %PATH%;xxx /M - dodaje ścieżkę użytkownika do ścieżki systemowej
  4. nadmierne używanie plików wsadowych może powodować ślepotę 1

Strona ss64 SETX ma kilka bardzo dobrych przykładów. Co ważne wskazuje, gdzie są klucze rejestru dla SETX vs SETX /M

Zmienne Użytkownika:

HKCU\Environment

Zmienne Systemowe:

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

Użycie instrukcje

Dołącz do użytkownika 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

Dołącz do systemu PATH

append_system_path.cmd. musi być uruchomiony jako administrator.

(jest to w zasadzie to samo, z wyjątkiem innego Key i modyfikatora 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

Alternatywy

Wreszcie jest potencjalnie ulepszona wersja o nazwie SETENV zalecana przez stronę ss64 SETX, która dzieli ustawienie środowiska użytkownika lub systemu zmienne.


1. Nie do końca prawda

 40
Author: icc97,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 11:59:04

Przydatne jeśli jesteś już w katalogu, który chcesz dodać do ścieżki:

set PATH=%PATH%;%CD%

Działa ze standardowym Windows cmd, ale nie w PowerShell.

Dla PowerShell, %CD% odpowiednikiem jest [System.Environment]::CurrentDirectory.

 26
Author: nclord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:49:39
  • zmiany w wierszu poleceń nie będą trwałe i zostaną utracone po zamknięciu konsoli.
  • Ścieżka działa jak kto pierwszy ten lepszy.
  • możesz chcieć nadpisać inne już dołączone pliki wykonywalne. Na przykład, jeśli masz już inną wersję na ścieżce i chcesz dodać inną wersję bez dokonywania trwałej zmiany na ścieżce, powinieneś umieścić katalog na początku polecenia.

Aby zastąpić już zawarte executables;

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

 5
Author: hevi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-27 16:50:29

Poza wszystkimi odpowiedziami, jeśli chcesz mieć ładne narzędzie GUI do edycji zmiennych środowiskowych Systemu Windows, możesz użyć Rapid Environment Editor .

Spróbuj! Jest bezpieczny w użyciu i jest niesamowity!

 5
Author: Netorica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 11:49:02

Odnośnie punktu 2 używam prostego pliku wsadowego, który wypełnia PATH lub inne zmienne środowiskowe dla mnie. W związku z tym domyślnie nie występuje zanieczyszczenie zmiennych środowiskowych. Ten plik wsadowy jest dostępny z każdego miejsca, więc mogę wpisać:

c:\>mybatchfile
-- here all env. are available
c:\>php file.php
 2
Author: Grzegorz Gajos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-02 07:37:42

Sprawdzanie powyższych sugestii w systemie Windows 10 LTSB i spojrzenie na kontury "Pomoc" (które można wyświetlić podczas wpisywania polecenia/?"na cmd), doprowadził mnie do wniosek, że polecenie PATH zmienia wartości systemowej zmiennej środowiskowej Path tylko dla bieżącej sesji, ale po ponownym uruchomieniu wszystkie wartości resetują się do wartości domyślnych - tak jak przed użyciem polecenia PATH.

Z drugiej strony używanie polecenia SETX z uprawnieniami administracyjnymi jest o wiele bardziej potężny. Zmienia te wartości na dobre (lub przynajmniej do następnego użycia tego polecenia lub do następnego manipulowania tymi wartościami przez GUI... ).

Najlepsze użycie składni SETX, które mi się udało:

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

Gdzie należy unikać znaku równości ' = ' i nie martwić się o spacje! Nie ma potrzeby wstawiania cudzysłowów dla ścieżki zawierającej spacje - znak dzielenia'; ' wykonuje zadanie.

Słowo kluczowe PATH, które następuje po SETX określa, który zestaw wartości należy zmienić wśród możliwych wartości systemowych zmiennych środowiskowych, a ścieżka % % (słowo PATH otoczone znakiem procentowym) wewnątrz cudzysłowów, mówi systemowi, aby zostawił istniejące wartości ścieżki w takim stanie, w jakim są i dodał następującą ścieżkę (tę, która podąża za znakiem podziału';') do istniejących wartości.

 2
Author: such_ke_nasdeeq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 11:52:23

Użyj pathed z gtools .

Robi rzeczy w sposób intuicyjny. Na przykład:

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

Pokazuje wyniki bez potrzeby tworzenia nowego cmd!

 2
Author: womd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 12:05:16

Jeśli uruchomisz polecenie cmd, zaktualizuje wszystkie zmienne systemowe dla tego okna Polecenia.

 1
Author: Pranav Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-17 02:06:22

W wierszu poleceń Poleć Cmd, aby użyła linii poleceń Eksploratora Windows, wprowadzając ją za pomocą start.

Więc start Yourbatchname.

Uwaga musisz się zarejestrować tak, jakby jego nazwa brzmiała batchfile.exe.

Programy i dokumenty mogą być dodawane do rejestru, więc wpisanie ich nazwy bez ścieżki w oknie dialogowym Start - Run lub skrótu umożliwia systemowi Windows ich znalezienie.

To jest ogólny plik reg. Skopiuj poniższe linie do nowego dokumentu tekstowego i zapisz go jako anyname.reg. Edytuj to z Twoimi programami lub dokumentami.

W ścieżkach, użyj \\, aby oddzielić nazwy folderów w ścieżkach kluczowych, ponieważ regedit używa pojedynczej \, aby oddzielić nazwy kluczy. Wszystkie pliki reg zaczynają się od REGEDIT4. Średnik zamienia wiersz w komentarz. Symbol @ oznacza przypisanie wartości do klucza, a nie nazwanej wartości.

Plik nie musi istnieć. Można go użyć do Ustawienia programu Word.exe do otwarcia Winword.exe.

Wpisanie start batchfile rozpocznie 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\\"

Masz już powiedziano o ścieżce w innej odpowiedzi. Patrz również doskey /? dla makr cmd (działają tylko podczas pisania).

Możesz uruchamiać polecenia startowe dla CMD. Z Windows Resource Kit Technical Reference

AutoRun

HKCU\Software\Microsoft\Command Processor

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

Opis

Zawiera polecenia wykonywane przy każdym uruchomieniu Cmd.exe.

 1
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 11:55:54

Lepszą alternatywą dla Panelu sterowania jest użycie tego darmowego programu z SourceForge o nazwie Pathenator .

Jednak działa tylko dla systemu, który ma. NET 4.0 lub nowszy, taki jak Windows 7, Windows 8 lub Windows 10.

 1
Author: Bimo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 12:03:56
  1. zainstalowałem wtedy PHP. Extracted php-7***.zip do C:\php\
  2. Wykonaj kopię zapasową zmiennej środowiskowej bieżącej ścieżki: Uruchom cmd i wykonaj polecenie: path >C:\path-backup.txt

  3. Get my current path value into C:\path.plik txt (w ten sam sposób)

  4. zmodyfikuj ścieżkę.txt (oczywiście, moja długość ścieżki to więcej niż 1024 znaków, windows działa kilka lat)
    • usunąłem tam ścieżki duplikatów, np. 'C:\Windows; lub C:\Windows\System32; lub C:\Windows\System32\Wbem; - mam dwa razy.
    • Usuń również odinstalowane ścieżki programów. Przykład: C:\Program Files\NonExistSoftware;
    • W ten sposób Moja ścieżka długość ciągu
    • na końcu łańcucha ścieżki add ;C:\php\
    • skopiuj tylko wartość ścieżki do bufora z obramowanymi podwójnymi cudzysłowami! Przykład: "C:\Windows;****; C:\php\" Nie ścieżka = powinna tam być!!!
  5. Otwórz Okna PowerShell jako Administrator.
  6. polecenie Run:

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

  1. Uruchom ponownie terminal (używam "Far manager" ) i sprawdź: php -v
 0
Author: Serb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-25 07:42:09

Choć może to być trywialne, musiałem ponownie uruchomić Windows w obliczu tego problemu.

Używam Windows 7 x64. Zrobiłem ręczną aktualizację zmiennej ścieżki systemowej. To zadziałało, gdybym sprawdził cmd.exe z menu stat. Ale jeśli wpiszę " cmd " w pasku adresu Eksploratora Windows, wydaje się, że ładuje ścieżkę z innego miejsca, które nie ma moich ręcznych zmian.

(aby uniknąć wątpliwości-tak, zamknąłem i ponownie cmd kilka razy przed ponownym uruchomieniem i nie pomocy.)

 0
Author: svinec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 12:13:36

W systemie Windows 10 udało mi się wyszukać zmienną środowiskową set path i dostałem następujące instrukcje:

  1. z pulpitu kliknij prawym przyciskiem myszy lewy dolny róg ekranu, aby uzyskać menu zadań Power User.
  2. z menu zadań Power User kliknij System.
  3. w oknie Ustawienia przewiń w dół do sekcji Powiązane ustawienia i kliknij łącze informacje o systemie.
  4. w oknie System kliknij łącze Zaawansowane ustawienia systemu w lewej nawigacji panel.
  5. w oknie Właściwości systemu kliknij kartę Zaawansowane, a następnie kliknij przycisk Zmienne środowiskowe u dołu tej karty.
  6. w oknie zmienne środowiskowe (na zdjęciu poniżej) zaznacz zmienną Path w sekcji zmienne systemowe i kliknij przycisk Edytuj. Dodaj lub zmodyfikuj linie ścieżek ścieżkami, do których komputer ma mieć dostęp. Każdy inny katalog jest oddzielony średnikiem, jak pokazano poniżej:

C:\Program Pliki;C:\Winnt;C:\Winnt\System32

Gdy pierwszy raz go szukałem, od razu pojawiło się okno Właściwości systemu. Po tym, znalazłem powyższe instrukcje.

 0
Author: Janin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-12 01:38:05