Définition et obtention de variables d'environnement Windows à partir de l'invite de commande?

220

Je souhaite définir une variable d'environnement à partir de l'invite de commande, puis pouvoir y accéder de manière globale (par exemple, je devrais la voir en accédant à Système -> Variables d'environnement).

Lorsque j'utilise la commande set, elle n'est pas accessible dans une nouvelle session cmd.

set NEWVAR=SOMETHING
echo %NEWVAR%

Questions connexes:

Shane
la source
1
Valeur de la variable setx - puis redémarrez l'invite de commande
Andrew,

Réponses:

252

Pour rendre la variable d'environnement accessible globalement, vous devez la définir dans le registre. Comme vous l'avez compris, utilisez simplement:

set NEWVAR = QUELQUE CHOSE

vous le définissez simplement dans l'espace de processus actuel.

Selon cette page, vous pouvez utiliser la setxcommande:

setx NEWVAR QUELQUE CHOSE

setxest intégré à Windows 7, mais pour les versions plus anciennes, il est possible qu'il ne soit disponible que si vous installez le Kit de ressources Windows

ChrisF
la source
4
Notez que vous devez spécifier un quota, par exemple: setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"fonctionnera. Mais setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45vous donnera des erreurs de syntaxe
MD. Mohiuddin Ahmed
5
@ MD.MohiuddinAhmed C'est parce qu'il y a des espaces dans le chemin.
ChrisF
36

Nous pouvons également utiliser "setx var variable / M" pour définir var au niveau de la variable d'environnement système au lieu du niveau utilisateur.

Remarque: cette commande doit être exécutée en tant qu'administrateur.

Minh Chau
la source
11
setx program "C:\Program Files" /M

/ M pour définir le niveau de la variable d'environnement système au lieu du niveau utilisateur, comme @Minh Chau answer

Tester entrez la description de l'image ici

RESTART en ligne de commande (si vous ne redémarrez pas la ligne de commande, la variable d'environnement ne fonctionnera pas)

entrez la description de l'image ici

Phan Van Linh
la source
Cela duplique une autre réponse et n’ajoute aucun nouveau contenu. S'il vous plaît, ne postez pas de réponse, sauf si vous avez réellement quelque chose de nouveau à contribuer.
DavidPostill
8
@ DavidPostill ma réponse ont une nouvelle est que nous avons besoin de redémarrer la ligne de commande. Je pense que c'est important
Phan Van Linh
2

Vous pouvez utiliser setx env var [/M]comme mentionné ci-dessus. Si cela ne prend pas effet, vous pouvez utiliser refreshenvpour actualiser les variables d'environnement. Vous n'avez pas besoin de redémarrer votre ordinateur, explorer.exe ou votre invite de commande pour le faire.

Edit: Apparemment, refreshenv ne vient pas naturellement avec Windows, voici donc la source: https://pastebin.com/1fJqA0pT
Enregistrez-le sous RefreshEnv.cmd et placez-le dans un dossier inclus dans vos variables d'environnement PATH.

DFSFOT
la source
1
+1 pour mentionner 'refreshenv' - je ne l'avais jamais vu auparavant!
Francis Norton
1

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

Tous les codes CMD et variables système couramment utilisés sont indiqués ci-dessous: Définissez les variables d'environnement du 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
Veuillez relire attentivement la question. Votre réponse ne répond pas à la question initiale.
DavidPostill
C'est proche, cependant. Utiliser REG ADD peut accomplir cela?
TOOGAM
0

Je veux ajouter que si vous utilisez le paramètre / s avec setx afin de définir des variables d’environnement sur un ordinateur distant, le service "Registre distant" doit être exécuté sur la machine cible, sinon vous recevrez un "ERREUR: Le l'opération spécifiée n'a pas pu être terminée. "

(J'ai demandé à Microsoft de mettre à jour leur article TechNet sur setx pour inclure ces informations.)

Tim Bailen
la source