it-swarm.it

Aggiunta di directory alla variabile di ambiente PATH in Windows

Sto cercando di aggiungere C:\xampp\php alla mia variabile d'ambiente PATH del mio sistema in Windows.

L'ho già aggiunto utilizzando la finestra di dialogo Variabili d'ambiente.

Ma quando scrivo nella mia console:

C:\>path

non mostra la nuova directory 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

Ho due domande:

  1. Perché è successo? C'è qualcosa che ho fatto di sbagliato?
  2. Inoltre, come aggiungo le directory alla mia variabile PATH usando la console (e, a livello di programmazione, con un file batch)?
433
Mp de la Vega

Questo modifica solo il registro. Un processo esistente non utilizzerà questi valori. Un nuovo processo lo farà se è avviato dopo questo cambiamento e non eredita il vecchio ambiente dal suo genitore.

Non hai specificato come hai iniziato la sessione della console. Il modo migliore per garantire questo è di uscire dal comando Shell ed eseguirlo di nuovo. Dovrebbe quindi ereditare il PATH aggiornato.

120
Hans Passant

Opzione 1

Dopo aver modificato PATH con la GUI, chiudere e riaprire la finestra della console.

Funziona perché solo i programmi avviati dopo la modifica vedranno il nuovo PATH.

Opzione 2

Esegui questo comando nella finestra di comando che hai aperto:

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

Questo comando accoda C:\your\path\here\ all'attuale PATH.

Abbattendolo:

  • set - Un comando che modifica le variabili di ambiente di cmd solo per la sessione cmd corrente; altri programmi e il sistema non sono interessati.
  • PATH= - Significa che PATH è la variabile di ambiente da modificare temporaneamente.
  • %PATH%;C:\your\path\here\ - La parte %PATH% si espande al valore corrente di PATH e ;C:\your\path\here\ viene quindi concatenato. Questo diventa il nuovo PATH.
847
JimR

ATTENZIONE: Questa soluzione potrebbe essere distruttiva per il PERCORSO e per la stabilità del sistema. Come effetto collaterale, unirà il PATH dell'utente e del sistema e troncerà il PERCORSO a 1024 caratteri. L'effetto di questo comando è irreversibile. Effettua prima un backup di PATH. Vedi i commenti per maggiori informazioni.

Non copiare e incollare ciecamente questo. Usare con cautela.

Puoi permanentemente aggiungere un percorso a PATH con il comando setx :

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

Rimuovere il flag /M se si desidera impostare l'utente PATH al posto del sistema PATH.

Gli appunti:

  • Il comando setx è disponibile solo in Windows 7 e versioni successive.
  • È necessario eseguire questo comando da un prompt dei comandi con privilegi elevati.

  • Se vuoi solo cambiarlo per la sessione corrente, usa set .

169
Nafscript

Non hai bisogno di alcun comando set o setx, basta aprire il terminale e digitare:

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 tieni presente, 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%
56
zar

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 verificare la presenza del tuo C:\xampp\php prima di aggiungere a PATH (nel caso sia stato aggiunto in precedenza). Puoi racchiuderlo in un condizionale if

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")
}
32
Ifedi Okonkwo

SETX più sicuro

Annuisci a tutti i commenti sul @ SETX risposta iniziale di @ Nafscript .

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

Avvertenze

  1. Backup your PATH - SETX 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 ss64 SETX page 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 un Key diverso 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 esiste potenzialmente una versione migliorata chiamata SETENV consigliata dalla pagina SETX di ss64 che si divide per impostare le variabili di ambiente dell'utente o di sistema.


1. Non strettamente vero

26
icc97

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

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

23
nclord

Cosa succede se si configura il percorso usando setx? Il modo migliore è semplicemente attraverso le finestre U.I. Pannello di controllo-> Tutte le voci 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.

19
Thomas Fonseca
  • 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 al percorso, devi inserire la directory all'inizio del comando.

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

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

3
hevi

Oltre a tutte le risposte, se vuoi un tool Nice GUI per modificare le variabili di ambiente di Windows puoi usare Rapid Environment Editor

provalo! è sicuro da usare e fantastico!

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

2
Mp de la Vega

Controllando i suggerimenti sopra riportati su Windows 10 LTSB e dando un'occhiata ai contorni di "aiuto" (che possono essere visualizzati quando si digita "command /?" Sul cmd), mi ha portato alla conclusione Che il comando PATH cambia il variabile di ambiente di sistema Valori di percorso solo per la sessione corrente, ma dopo il riavvio di tutti i valori ripristinati sui valori predefiniti, proprio come prima del comando PATH.

D'altra parte usare il comando SETX con privilegi amministrativi è molto più potente, cambia quei valori per sempre (o almeno fino alla prossima volta che questo comando viene usato 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 uso della sintassi SETX Che ha funzionato per me potrebbe aiutare qualcuno un giorno:

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

dove qualsiasi segno di uguale '=' dovrebbe essere evitato, e non preoccuparti di 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% (il PERCORSO di parole circondato dal segno di percentuale) all'interno delle virgolette, indica al sistema operativo di lasciare l'esistente Valori PATH come sono e aggiungere il seguente percorso (quello che segue il segno di divisione ';') ai valori esistenti.

HTH

1
such_ke_nasdeeq

Per quanto riguarda point 2 sto usando un semplice file batch che sta compilando PATH o altre variabili di ambiente per me. Pertanto, per impostazione predefinita non vi è inquinamento delle variabili di ambiente. Questo file batch è accessibile ovunque, quindi posso digitare:

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

In un comando Chiedi a Cmd di usare la riga di comando di Explorer facendolo precedere da 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, <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\\"

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

È possibile 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.

0
user6017774

usa percorso da gtools

fa le cose in modo intuitivo, ad esempio:

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

e mostra risultati senza la necessità di generare un nuovo cmd !

0
womd

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

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

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

0
Bill Moore

Se si esegue il comando cmd, aggiornerà tutte le variabili di sistema per quella finestra di comando.

0
RBXII3