Aggiunta di directory alla variabile di ambiente PATH in Windows

Nei sistemi operativi Windows NT, ho provato ad aggiungere questa directory alla variabile di ambiente PATH mio sistema:

 C:\xampp\php 

Così ho aggiunto quella directory con “Risorse del computer”> “Proprietà”> “Avanzate”> “Variabili d’ambiente”> “Percorso”. L’ho salvato, ma quando ho digitato:

 > path 

alla mia console, non mostra alcuna directory “C: \ xampp \ php” aggiunta

 > 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 > Fil es\Microsoft SQL Server\90\Tools\binn\;C:\Program > Files\QuickTime\QTSystem\;D:\P rogram Files\TortoiseSVN\bin;D:\Program > Files\Bazaar;C:\Program Files\Android\an droid-sdk\tools;D:\Program > Files\Microsoft Visual Studio\Common\Tools\WinNT;D:\P rogram > Files\Microsoft Visual Studio\Common\MSDev98\Bin;D:\Program > Files\Microso ft Visual Studio\Common\Tools;D:\Program Files\Microsoft > Visual Studio\VC98\bin 

Ho due domande:

  1. Perché è successo? C’è qualcosa che ho fatto di sbagliato?

  2. Come posso aggiungere directory nella mia variabile PATH usando la console o programmaticamente (Attraverso un file batch)?

Questo modifica solo il registro. Un processo non utilizzerà questi valori finché non viene avviato dopo questa modifica e non eredita l’ambiente dal suo genitore.

Non hai specificato come hai iniziato la sessione della console. Il modo migliore per garantire questo è disconnettersi e riconnettersi.

  • Aprire la finestra della console dopo aver modificato il percorso del sistema tramite il pannello di controllo o le impostazioni di sistema.

O

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

    nella finestra di comando che hai aperto.

    Abbattendolo:

     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 

Avviso: non saltare la creazione di un backup prima di utilizzare questo metodo
Potresti perdere dati nel %PATH% o aggiungere contenuto irrilevante unito a variabili di sistema
In altre parole, non copiare / incollare ciecamente. Usare con caucanvas.


In Windows 7 e Windows 8 possiamo impostare in modo permanente il percorso dalla riga di comando utilizzando il comando setx . Per aggiungere git a “PATH”:

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

Nota che questo comando può troncare il percorso che passi a 1024 caratteri, perdendo qualcosa oltre a questo. In generale, assicurarsi di utilizzare cmd.exe e non command.com . Entrambi forniscono la riga di comando. cmd.exe è più recente e ha meno restrizioni. command.com è più vecchio; ha dei limiti come la dimensione del percorso.

Nella famiglia Windows 8 (8 e 8.1) è necessario eseguire il prompt dei comandi con i privilegi di amministratore.

Modifica: come commentato da @FF_Dev

A causa dell’uso della variabile %PATH% , questo comando fonderà le variabili di ambiente del sistema con quelle dell’utente.

Non hai bisogno di alcun comando set o setx , apri semplicemente il terminale e digita:

 PATH 

Questo mostra il valore corrente della variabile PATH. Ora vuoi aggiungere la directory ad esso? Basta digitare:

 PATH %PATH%;C:\xampp\php 

Se per qualsiasi motivo si desidera cancellare la variabile PATH (nessun percorso o eliminare tutti i percorsi), digitare:

 PATH ; 

Aggiornare

Come notato da Danial Wilson nel commento qui sotto, imposta il percorso solo nella sessione corrente. Per impostare il percorso in modo permanente usa setx ma setx attenzione, anche se questo imposta il percorso in modo permanente ma NON nella sessione corrente, quindi devi iniziare una nuova riga di comando per vedere le modifiche, maggiori informazioni qui .

Per verificare se esiste una variabile ambientale o vedere il suo valore, utilizzare ECHO commnad:

 echo %YOUR_ENV_VARIABLE% 

In questa età di PowerShell, modificherei PATH in questo modo:

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

Per impostare la variabile per tutti gli utenti, a livello di macchina, l’ultima riga dovrebbe essere come:

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

In uno script di PowerShell, potresti voler controllare la presenza di C:\xampp\php prima di aggiungere a PATH (nel caso sia stato aggiunto in precedenza). Puoi avvolgerlo in un condizionale.

Quindi mettendo tutto insieme:

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

In ritardo per la festa – ma a portata di mano se si è già nella directory che si desidera aggiungere al PERCORSO.

set PATH=%PATH%;%CD%

modifica: come per commento – funziona con Windows standard cmd ma non in PowerShell.

Per PowerShell l’equivalente %CD% è [System.Environment]::CurrentDirectory

SETX più sicuro

Annudi tutti i commenti sulla risposta SETX iniziale di @ Nafscript .

  • SETX per impostazione predefinita aggiorna il percorso dell’utente .
  • SETX ... /M aggiornerà il tuo percorso di sistema .
  • %PATH% contiene il percorso di sistema con il percorso utente aggiunto

Avvertenze

  1. Effettua il backup del tuo PATHSETX troncherà la tua posta indesiderata più di 1024 caratteri
  2. Non chiamare SETX %PATH%;xxx – aggiunge il percorso di sistema nel percorso dell’utente
  3. Non chiamare SETX %PATH%;xxx /M – aggiunge il percorso dell’utente nel percorso di sistema
  4. L’eccessivo utilizzo del file batch può causare cecità 1

La pagina SETX di ss64 ha alcuni ottimi esempi. È importante sottolineare che le chiavi del Registro di sistema sono per SETX vs SETX /M

Variabili utente:

HKCU\Environment

Variabili di sistema:

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

Istruzioni d’uso

Aggiungi all’utente 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 

Aggiungi al sistema PATH

append_system_path.cmd . Deve essere eseguito come amministratore.

(è praticamente lo stesso eccetto con una Key diversa e il modificatore 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 

alternative

Infine c’è potenzialmente una versione migliorata chiamata SETENV raccomandata dalla pagina SETX di ss64 che si divide per impostare le variabili di ambiente dell’utente o di sistema.


1. Non strettamente vero

Cosa succede se si configura il percorso usando setx? Il modo migliore è semplicemente attraverso il pannello di controllo dell’interfaccia utente di Windows-> Tutti gli elementi del pannello di controllo-> Sistema-> Impostazioni avanzate del sistema-> Variabili d’ambiente

Scorri verso il basso fino a Percorso e seleziona Modifica. Puoi anche copiarlo e incollarlo nel tuo editor preferito in modo da poter vedere l’intero percorso e modificarlo più facilmente.

Oltre a tutte le risposte, se si desidera un valido strumento GUI per modificare le variabili di ambiente di Windows, è ansible utilizzare Rapid Environment Editor

Provalo! è sicuro da usare e fantastico!

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

  • le modifiche alla riga di comando non saranno permanenti, andranno perse alla chiusura della console.
  • Il percorso funziona come il primo viene prima servito.
  • Potresti voler sostituire altri eseguibili già inclusi. Ad esempio se hai già un’altra versione sul tuo percorso e vuoi aggiungere una versione diversa senza apportare modifiche permanenti sul percorso, devi inserire la directory all’inizio del comando.

Per eseguire l’override sono già inclusi gli eseguibili;

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

Per quanto riguarda il punto 2, sto utilizzando un semplice file batch che sta PATH o altre variabili di ambiente per me. Pertanto, per impostazione predefinita non vi è inquinamento delle variabili di ambiente. Questo file batch è accessibile da qualsiasi parte, quindi posso digitare:

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

Puoi controllare maggiori dettagli su questo semplice approccio qui .

Controllando i suggerimenti sopra riportati su Windows 10 LTSB e dando un’occhiata ai contorni di “aiuto” (che possono essere visualizzati digitando “comando /?” Sul cmd), sono giunto alla conclusione che il comando PATH modifica la variabile di ambiente di sistema Valori di percorso solo per la sessione corrente, ma dopo il riavvio tutti i valori vengono ripristinati al loro valore predefinito, proprio come prima del comando PATH.

D’altra parte l’uso del comando SETX con privilegi amministrativi è molto più potente, cambia quei valori per sempre (o almeno fino alla prossima volta che viene usato questo comando o fino alla prossima volta che quei valori sono manipolati manualmente dalla GUI …).

Ma per motivi di chiarezza ho pensato che condividere qui il miglior utilizzo della syntax SETX che ha funzionato per me potrebbe aiutare qualcuno un giorno:

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

dove ogni segno di uguale ‘=’ dovrebbe essere evitato, e non preoccuparti degli spazi! non è necessario inserire altre virgolette per un percorso che contiene spazi al suo interno: il segno di divisione ‘;’ Fai il lavoro.

La parola chiave PATH che segue SETX definisce quale set di valori deve essere modificato tra i valori possibili di Variabili ambiente di sistema e% PATH% (la parola PATH circondato dal segno di percentuale) all’interno delle virgolette, indica al sistema operativo di lasciare l’esistente I valori PATH così come sono e aggiungono il seguente percorso (quello che segue il segno di divisione ‘;’) ai valori esistenti.

HTH

Un’alternativa migliore al Pannello di controllo consiste nell’utilizzare questo programma gratuito da sourceforge chiamato Pathenator:

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

Tuttavia, lavora solo per sistemi con Dot.Net 4.0 o versioni successive, ad esempio Windows 7,8 o 10.

In un prompt dei comandi si dice a Cmd di usare la riga di comando di Explorer precedendola con start .

Quindi start Yourbatchname .

Nota che devi registrarti come se il suo nome fosse batchfile.exe .

Programmi e documenti possono essere aggiunti al registro in modo da digitare il loro nome senza il loro percorso nella finestra di dialogo Start – Esegui o il collegamento consente a Windows di trovarli.

Questo è un file reg generico. Copia le righe seguenti in un nuovo documento di testo e salvalo come anyname.reg. Modificalo con i tuoi programmi o documenti.

Nei percorsi usa \ per separare i nomi delle cartelle nei percorsi chiave in quanto regedit usa un singolo \ per separare i suoi nomi di chiavi. Tutti i file reg iniziano con REGEDIT4. Un punto e virgola trasforma una linea in un commento. Il simbolo @ significa assegnare il valore alla chiave piuttosto che un valore denominato.

Il file non deve esistere. Questo può essere usato per impostare Word.exe per aprire Winword.exe.

Digitando start batchfile avvierà iexplore.exe.

 REGEDIT4 ;The bolded name below is the name of the document or program, . [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\\" 

Ti è già stato detto del percorso in un’altra risposta. Vedi anche doskey /? per macro cmd (funzionano solo durante la digitazione).

È ansible eseguire i comandi di avvio per CMD. Da Riferimento tecnico di Windows Recource Kit

AutoRun

 HKCU\Software\Microsoft\Command Processor Data type Range Default value REG_SZ list of commands There is no default value for this entry. 

Descrizione

Contiene i comandi che vengono eseguiti ogni volta che si avvia Cmd.exe.