2 votes

Pourquoi la variable d'environnement n'est-elle pas mise à jour dans cmd sans redémarrage ?

Commandes CMD :

setx SOMEVARIABLE "newpath" /M
setx SOMEVARIABLE "%SOMEVARIABLE%;newpath2" /M

Résultats attendus le ECHO %SOMEVARIABLE% :

newpath;newpath2

Rendement réel :

%SOMEVARIABLE%

Valeur réelle stockée (à partir de Propriétés du système->Variables d'environnement GUI) :

%SOMEVARIABLE%;newpath2

La seule façon d'obtenir la sortie attendue est de redémarrer l'invite de commande à chaque fois que je modifie la variable d'environnement. J'utilise cette commande pour automatiser la modification de la valeur de la variable d'environnement plusieurs fois au cours du même processus.

  1. Pourquoi la variable d'environnement n'est-elle pas mise à jour dans cmd sans redémarrage ?
  2. Est-il possible d'obtenir la valeur mise à jour de %SOMEVARIABLE% sans redémarrer l'invite de commande ?

4voto

Ben Collins Points 11318

Le problème est que setx modifie le environnement mondial et non l'environnement local. Par conséquent, vous devez redémarrer l'invite de commande pour prendre en compte la modification.

Deux possibilités s'offrent à vous :

  • Utiliser un outil différent qui modifie l'environnement global y l'environnement local
  • Créez un fichier batch qui fait les deux et utilisez-le :

    ::setenv.bat
    @echo off
    set %1=%2
    setx %1 %2 %3

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X