Impostare e ottenere variabili di ambiente Windows dal prompt dei comandi?


220

Voglio impostare una variabile d'ambiente dal prompt dei comandi e quindi essere in grado di accedervi a livello globale (ad esempio, dovrei vederlo andando su Sistema -> Variabili d'ambiente).

Quando utilizzo il comando set, non è accessibile in una nuova sessione cmd.

set NEWVAR=SOMETHING
echo %NEWVAR%

Domande correlate:


1
valore variabile setx - quindi riavviare il prompt dei comandi
Andrew

Risposte:


252

Per rendere la variabile d'ambiente accessibile a livello globale, è necessario impostarla nel registro. Come hai capito usando semplicemente:

imposta NEWVAR = QUALCOSA

lo stai semplicemente impostando nello spazio del processo corrente.

Secondo questa pagina è possibile utilizzare il setxcomando:

setx NEWVAR QUALCOSA

setxè integrato in Windows 7, ma per le versioni precedenti potrebbe essere disponibile solo se si installa il Resource Kit di Windows


4
Si noti che è necessario specificare la quota, ad esempio: setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"funzionerà. Ma setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45ti darà errori di sintassi
MD. Mohiuddin Ahmed,

5
@ MD.MohiuddinAhmed Questo perché ci sono spazi nel percorso.
ChrisF,

36

Possiamo anche usare "setx var variant / M" per impostare var al livello della variabile di ambiente del sistema anziché al livello dell'utente.

Nota: questo comando deve essere eseguito come amministratore.


10
setx program "C:\Program Files" /M

/ M per impostare il livello variabile dell'ambiente di sistema anziché il livello utente come la risposta di @Minh Chau

Test inserisci qui la descrizione dell'immagine

RIAVVIA riga di comando (se non si riavvia la riga di comando, la variabile di ambiente non funzionerà)

inserisci qui la descrizione dell'immagine


Questo duplica un'altra risposta e non aggiunge nuovi contenuti. Per favore, non pubblicare una risposta a meno che tu non abbia effettivamente qualcosa di nuovo da contribuire.
DavidPostill

8
@DavidPostill la mia risposta ha un nuovo è che abbiamo bisogno di riavviare la riga di comando. Penso che sia importante
Phan Van Linh,

2

Puoi usare setx env var [/M]come menzionato sopra. Se non ha effetto, è possibile utilizzare refreshenvper aggiornare le variabili di ambiente. Non è necessario riavviare il computer, explorer.exe o il prompt dei comandi per farlo.

Modifica: apparentemente refreshenv non è naturale con Windows, quindi ecco la fonte: https://pastebin.com/1fJqA0pT
Salva come RefreshEnv.cmd e posizionalo in una cartella inclusa nelle variabili di ambiente PATH


1
+1 per menzionare "refreshenv" - non l'avevo mai incontrato prima!
Francis Norton

1

Le variabili di sistema possono essere impostate tramite CMD e registro Ad es. query reg "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v PATH

Qui sono riportati tutti i codici CMD e le variabili di sistema comunemente usati: Impostare le variabili di ambiente di sistema di Windows utilizzando CMD .

Apri CMD e digita Set

Otterrai tutti i valori della variabile di sistema.

Digitare set java per conoscere i dettagli del percorso di java installato sul sistema operativo Windows.


Si prega di leggere di nuovo attentamente la domanda. La tua risposta non risponde alla domanda originale.
David Post

È vicino, però. L'utilizzo di REG ADD può ottenere questo risultato?
TOOGAM

0

Voglio aggiungere che se si utilizza il parametro / s con setx per impostare le variabili di ambiente su un computer remoto, il servizio "Registro remoto" deve essere in esecuzione sul computer di destinazione oppure si riceverà un "ERRORE: operazione specificata non può essere completata. "

(Ho chiesto a Microsoft di aggiornare il loro articolo TechNet su setx per includere queste informazioni.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.