Définition d'une variable d'environnement système à partir d'un fichier de commandes Windows?

195

Est-il possible de définir une variable d'environnement au niveau du système à partir d'une invite de commande dans Windows 7 (ou même XP d'ailleurs). Je cours à partir d'une invite de commande élevée.

Lorsque j'utilise la setcommande ( set name=value), la variable d'environnement semble être uniquement valide pour la session de l'invite de commande.

Santhosh
la source

Réponses:

179

Les outils de support XP (qui peuvent être installés à partir de votre CD XP) sont fournis avec un programme appelé 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

Je pense que Windows 7 est livré avec setxune installation standard.

Hugh Allen
la source
7
Windows 7 (peut-être déjà Vista) a la norme setx, avec un changement mineur? il n'y a pas de -idrapeau et juste en cours d'exécution setx /?affiche toutes les aides + exemples
stijn
3
N'oubliez pas que vous pouvez toujours vérifier si vous avez ce programme sur votre chemin en tapant wherepuis le nom du programme (donc dans ce cas, where setx.exeen testant cela sur un serveur 2008 et Server 2008SP2, j'ai trouvé que dans les deux cas, il existait à%windir%\System32\setx.exe
aolszowka
2
@stijn - La version Win7 a également officiellement changé l'introducteur de drapeau de -la barre oblique /. Cependant, il semble que la -version fonctionne toujours.
TED
2
Il semble y avoir une limite de 1024 longueurs au contenu de la variable
setx
Le setx fourni par XP SP2 Support Tools nécessite une barre oblique /et le tiret -ne fonctionne pas. setx variable value /m
Keith
137

Exemple simple pour définir JAVA_HOME avec setx.exeen ligne de commande:

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

Cela définira la variable d'environnement "JAVA_HOME" pour l'utilisateur actuel. Si vous souhaitez définir une variable pour tous les utilisateurs, vous devez utiliser l'option "-m". Voici un exemple:

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

Remarque : vous devez exécuter cette commande en tant qu'administrateur.

Remarque : assurez-vous d'exécuter la commande setx à partir d'une fenêtre d'administration en ligne de commande

Mindaugas Jaraminas
la source
7
notez également que certains outils n'aiment pas les espaces dans JAVA_HOME, donc cela vaut la peine d'utiliser Progra~1comme ça: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael
1
Où cela a-t-il été toute ma vie?
Philip Rego
20

Si vous définissez une variable via SETX, vous ne pouvez pas utiliser cette variable ou ses modifications immédiatement. Vous devez redémarrer les processus qui souhaitent l'utiliser.

Utilisez également la séquence suivante pour la définir directement dans le processus de configuration (fonctionne parfaitement pour moi dans les scripts qui effectuent des tâches d'initialisation après la définition de variables globales) :

SET XYZ=test
SETX XYZ test
Anton F.
la source
Merci, cela me rendait fou! CMD.EXE a désespérément besoin d'une mise à niveau pour se comporter comme une console normale ...!
Salvador Valence
Je ne comprends pas: où dois-je exécuter ces 2 lignes?
Danijel
1
Vous pouvez également exécuter la commande refreshenvaprès avoir utilisé setx pour utiliser les nouvelles variables.
BrianHVB
@BrianHVB refreshenvn'est pas reconnu comme une commande. Faites-vous cela dans cmdou powershell? (EDIT: testé dans les deux en fait, ne fonctionne pas dans les deux consoles)
bigp
@ bigp oups, vous avez raison. C'est une commande qui est ajoutée lorsque chocolatey est installé. J'ai du chocolat sur tous mes systèmes et je ne l'ai pas réalisé jusqu'à ce que je le recherche.
BrianHVB
2

Pour XP, j'ai utilisé un outil (gratuit / donateware) appelé "RAPIDEE" (Rapid Environment Editor), mais SETX est certainement suffisant pour Win 7 (je ne le savais pas auparavant).

FractalSpace
la source
2

Les variables système peuvent être définies via CMD et registre Par ex. requête de reg "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v PATH

Tous les codes CMD et variables système couramment utilisés sont indiqués ici: Définir les variables d'environnement système Windows à l'aide de CMD .

Ouvrez CMD et tapez Set

Vous obtiendrez toutes les valeurs de la variable système.

Tapez set java pour connaître les détails du chemin de java installé sur votre système d'exploitation Windows.

Himanshu Singh
la source
1

Juste au cas où vous auriez besoin de supprimer une variable, vous pouvez utiliser SETENV de Vincent Fatica disponible sur http://barnyard.syr.edu/~vefatica . Pas exactement récent ('98) mais toujours sous Windows 7 x64.

avorter
la source
5
setx vous permet également de supprimer en définissant la valeur sur vide
Steve Lloyd