Impostazione di una variabile di ambiente di sistema da un file batch di Windows?


195

È possibile impostare una variabile d'ambiente a livello di sistema da un prompt dei comandi in Windows 7 (o anche XP per quella materia). Sto correndo da un prompt dei comandi elevato.

Quando uso il setcomando ( set name=value), la variabile di ambiente sembra essere valida solo per la sessione del prompt dei comandi.

Risposte:


179

Gli strumenti di supporto XP (che possono essere installati dal tuo CD XP) vengono forniti con un programma chiamato setx.exe:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

Penso che Windows 7 sia effettivamente incluso setxin un'installazione standard.


7
Windows 7 (forse Vista già) ha setx standard, con una piccola modifica? non c'è -ibandiera e solo la corsa setx /?mostra tutto l'aiuto + esempi
stijn

3
Ricorda che puoi sempre verificare se hai questo programma sul tuo percorso digitando wheree quindi il nome del programma (quindi in questo caso where setx.exenel test questo su un Server 2008 e Server 2008SP2 ho scoperto che in entrambi i casi esisteva a%windir%\System32\setx.exe
aolszowka,

2
@stijn - La versione di Win7 ha anche cambiato ufficialmente l'introduzione della bandiera dalla -barra in avanti /. Tuttavia, sembra che la -versione funzioni ancora.
TED

2
Sembra che ci sia un limite di lunghezza 1024 al contenuto variabile
setx

Il setx fornito dagli strumenti di supporto di XP SP2 richiede una barra /e il trattino -non funziona. setx variable value /m
Keith

137

Semplice esempio di come impostare JAVA_HOME con setx.exenella riga di comando:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Ciò imposterà la variabile di ambiente "JAVA_HOME" per l'utente corrente. Se vuoi impostare una variabile per tutti gli utenti, devi usare l'opzione "-m". Ecco un esempio:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Nota : è necessario eseguire questo comando come amministratore.

Nota : assicurarsi di eseguire il comando setx da una finestra di amministrazione della riga di comando


7
nota inoltre che ad alcuni strumenti non piacciono gli spazi in JAVA_HOME, quindi vale la pena usarli in questo Progra~1modo: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael

1
Dov'è stata questa tutta la mia vita.
Philip Rego,

20

Se si imposta una variabile tramite SETX, non è possibile utilizzare immediatamente questa variabile o le sue modifiche. Devi riavviare i processi che vogliono usarlo.

Utilizzare la seguente sequenza per impostarla direttamente anche nel processo di impostazione (funziona perfettamente per me negli script che eseguono alcune operazioni di init dopo aver impostato le variabili globali) :

SET XYZ=test
SETX XYZ test

Grazie, questo mi stava facendo impazzire! CMD.EXE necessita disperatamente di un aggiornamento per comportarsi come una normale console ...!
Salvador Valencia,

Non capisco questo: dove eseguo quelle 2 linee?
Danijel,

1
È inoltre possibile eseguire il comando refreshenvdopo aver utilizzato setx per utilizzare le nuove variabili.
BrianHVB

@BrianHVB refreshenvnon riconosciuto come comando. Lo stai facendo in cmdo powershell? (EDIT: testato in entrambi in realtà, non funziona in nessuna delle console)
bigp

@bigp oops, hai ragione. È un comando che viene aggiunto quando è installato chocolatey. Ho un po 'di cioccolato su tutti i miei sistemi e non me ne sono reso conto fino a quando non ho cercato.
BrianHVB il

2

Per XP, ho usato uno strumento (gratuito / donateware) chiamato "RAPIDEE" (Rapid Environment Editor), ma SETX è sicuramente sufficiente per Win 7 (non lo sapevo prima).


2

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.


1

Nel caso in cui fosse necessario eliminare una variabile, è possibile utilizzare SETENV di Vincent Fatica disponibile su http://barnyard.syr.edu/~vefatica . Non esattamente recente ('98) ma funziona ancora su Windows 7 x64.


5
setx consente di eliminare anche impostando il valore su vuoto
Steve Lloyd,
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.