Quelle est la différence entre
SETX
etSET
?
Selon ma compréhension:
Les deux sont utilisés pour définir les variables d'environnementSETX
est destiné aux variables utilisateur.SET
est pour les variables Shell.
J'ai bien peur que ce ne soit pas si simple. Les variables d'environnement ne sont pas limitées par la portée, comme vous le suggérez, mais vous avez raison de dire que la durée de vie de la valeur dans la variable est différente lors de la comparaison des verbes.
Set
modifie les valeurs d'environnement du shell actuel (la fenêtre) et la modification est disponible immédiatement, mais elle est temporaire. La modification n'affectera pas les autres shells en cours d'exécution et, dès que vous fermez le shell, la nouvelle valeur est perdue jusqu'à ce que vous exécutiez à nouveau le jeu.
setx
modifie la valeur de façon permanente, ce qui affecte tous les futurs shells, mais ne modifie pas l'environnement des shells en cours d'exécution. Vous devez quitter le shell et le rouvrir avant que la modification ne soit disponible, mais la valeur restera modifiée jusqu'à ce que vous la changiez à nouveau.
Voir ici pour un exemple: http://batcheero.blogspot.com/2008/02/set-and-setx.html
En fait, nous pouvons définir une variable sur trois portées:
1. coquille
2. Utilisateur
3. Système (machine) ou global
C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.
SET [variable=[string]]
variable Specifies the environment-variable name.
string Specifies a series of characters to assign to the variable.
Type SET without parameters to display the current environment variables.
C:\Users\977246>setx /?
SetX has three ways of working:
Syntax 1:
SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
Syntax 2:
SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
Syntax 3:
SETX [/S system [/U [domain\]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
Description:
Creates or modifies environment variables in the user or system
environment. Can set variables based on arguments, regkeys or
file input.
To remove the variable set value to empty string as follows
Example: setx path ""
Dans les variables d'environnement utilisateur et système de l'interface graphique.
Ajout d'un point qui a été manqué par d'autres répondeurs.
Pour définir une variable d'environnement système plutôt qu'une variable d'environnement utilisateur, il suffit d'utiliser l'option/m dans la commande setx et de l'exécuter à partir d'une invite de commande élevée (administrateur).
setx variable value /m
Exemple: ouvrez l'invite de commande en tant qu'administrateur et exécutez
setx Path "%Path%;C:\Users\User\Libs" /m
Explanation: La commande ci-dessus va ajouter "C:\Users\User\Libs" à la variable de chemin déjà existante (variable d'environnement système).
Sans l'argument/m , il ne modifiera ou ne créera qu'une variable de chemin d'accès de niveau utilisateur.
À partir du manuel de l'utilisateur setx,
/ M Spécifie que la variable doit être définie dans l'environnement système (HKEY_LOCAL_MACHINE). La valeur par défaut consiste à définir la variable sous l'environnement HKEY_CURRENT_USER.