Comment exporter et importer des variables d'environnement dans Windows?

94

J'ai trouvé qu'il était difficile de synchroniser mes variables d'environnement sur différentes machines. Je veux simplement exporter les paramètres d'un ordinateur et les importer vers d'autres.

Je pense que cela devrait être possible, mais je ne sais pas comment le faire. Quelqu'un peut-il m'aider? Merci.

max_y
la source

Réponses:

121

Vous pouvez utiliser RegEdit pour exporter les deux clés suivantes:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

HKEY_CURRENT_USER\Environment

Le premier ensemble comprend des variables d'environnement système / global; le deuxième ensemble sont des variables de niveau utilisateur. Modifiez si nécessaire, puis importez les fichiers .reg sur la nouvelle machine.

jdigital
la source
2
lancez le programme regedit, mettez en surbrillance les clés en question puis utilisez l'option "fichier -> export" afin de l'enregistrer en tant que fichier
Silvertiger
l'importation se fait simplement en double-cliquant sur le fichier .reg tout en ayant les autorisations d'administrateur.
thanos.a
REMARQUE: cela n'obtient pas toutes les variables d'environnement (EV)! Je viens de faire un chemin de jeu de commandes et j'ai gâché tout mon EV. Je suis allé dans ce registre et seuls les EV d'origine y étaient. J'ai fait une restauration du système et j'ai récupéré tous mes EV manquants dans la variable PATH. Ce registre ne contient que quelques EV nécessaires, mais aucun des EV de votre programme ni aucun chemin que vous avez défini manuellement. IL FAUT SE MÉFIER! Sur une ligne de commande: echo path> mybackup.txt ou set> mybackup.txt pour toute la sauvegarde sur TOUS les vars / chemins et TOUS les vars / chemins sys.
ejbytes
@ejbytes Cela copie vos variables globales que vous avez définies, mais il est probablement préférable de les exporter avec l'interface de ligne de commande plutôt que via le registre.
Alexander
88

J'utiliserais la commande SET à partir de l'invite de commande pour exporter toutes les variables, plutôt que juste PATH comme recommandé ci-dessus.

C:\> SET >> allvariables.txt

Pour importer les variables, on peut utiliser une simple boucle:

C:\> for /F %A in (allvariables.txt) do SET %A
Kushal Paudyal
la source
11
Comment réimporter tous les Env. Vars. de allvariables.txt
Ash
Très agréable. Je viens de perdre toutes mes variables de chemin en faisant un mauvais ensemble de chemins et j'ai dû faire une restauration du système. Heureusement, j'ai eu une mise à jour récente à partir d'aujourd'hui plus tôt. Je viens de faire une sauvegarde avec cette commande. Agréable. Cette solution de registre ne contient que les vars d'origine, mais rien de ce que «vous» (comme un programmeur dit pour les nouvelles versions) a créé ou une nouvelle installation créée.
ejbytes
1
Sous Windows 7 64 bits, s'il existe deux variables de nom identique au niveau utilisateur et au niveau système, cette commande donne la priorité à la variable de niveau utilisateur et omet le niveau système un. Ce comportement a du sens, mais j'ai pensé qu'il pourrait valoir la peine d'être mentionné au cas où quelqu'un s'attendrait à l'ensemble complet de chaque type de variable.
GoldDragonTSU
1
cette commande a fonctionné:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow
1
Pour répondre Ash, vous pouvez utiliser une simple boucle for dans l'invite cmd pour réimporter toutes les variables:for /F %A in (allvariables.txt) do SET %A
Gabriel
17

Pour exporter des variables utilisateur, ouvrez une invite de commande et utilisez regedit avec / e

Exemple :

regedit /e "%userprofile%\Desktop\my_user_env_variables.reg" "HKEY_CURRENT_USER\Environment"
Vincsilver
la source
13

Combinez les réponses de @vincsilver et @jdigital avec quelques modifications,

  1. exporter .regvers le répertoire courant
  2. ajouter une marque de date

code:

set TODAY=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%

regedit /e "%CD%\user_env_variables[%TODAY%].reg" "HKEY_CURRENT_USER\Environment"
regedit /e "%CD%\global_env_variables[%TODAY%].reg" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

La sortie aimerait:

global_env_variables[2017-02-14].reg
user_env_variables[2017-02-14].reg
Mithril
la source
3
la variable AUJOURD'HUI dépend de % DATE% qui dépend de la manière dont les préférences de paramètres régionaux de Windows. La commande ci-dessus ne fonctionne pas pour l'Inde. Cela fonctionne -> définir AUJOURD'HUI =% DATE: ~ 4,2% -% DATE: ~ 7,2% -% DATE: ~ 10,4%
Rakesh N
5

Vous pouvez accéder aux variables d'environnement dans la ligne de commande ou dans le registre.

Ligne de commande

Si vous voulez une variable d'environnement spécifique, tapez simplement le nom de celle-ci (par exemple PATH), suivi de a >et du nom de fichier dans lequel écrire. Ce qui suit va vider la variable d'environnement PATH dans un fichier nommé path.txt.

C:\> PATH > path.txt

Méthode de registre

Le registre Windows contient toutes les variables d'environnement, à différents endroits en fonction de l'ensemble que vous recherchez. Vous pouvez utiliser les commandes d'importation / exportation du registre pour les déplacer vers l'autre PC.

Pour les variables système:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Pour les variables utilisateur:

HKEY_CURRENT_USER\Environment
Gavin Bunney
la source
1
Sur ma machine, PATH> (ou PATH >>) a renvoyé un fichier texte vide, tandis que SET >> a fonctionné. Windows 7 x64 bits.
PatrickT
A travaillé pour moi sur Win7x64. Je ne sais pas quelles sont les exigences.
Kissaki
À partir de quel dossier exécutez-vous cette commande? Le mien a dit ne pouvait pas trouver le chemin.
Azurespot du
2

Ma méthode préférée pour ce faire est de l'écrire sous forme de script batch pour combiner à la fois les variables utilisateur et les variables système dans un seul fichier de sauvegarde comme ceci, créer un environment-backup.batfichier et y mettre:

@echo off
:: RegEdit can only export into a single file at a time, so create two temporary files.
regedit /e "%CD%\environment-backup1.reg" "HKEY_CURRENT_USER\Environment"
regedit /e "%CD%\environment-backup2.reg" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

:: Concatenate into a single file and remove temporary files.
type "%CD%\environment-backup1.reg" "%CD%\environment-backup2.reg" > environment-backup.reg
del "%CD%\environment-backup1.reg"
del "%CD%\environment-backup2.reg"

Cela crée environment-backup.regque vous pouvez utiliser pour réimporter des variables d'environnement existantes. Cela ajoutera et remplacera de nouvelles variables, mais ne supprimera pas celles existantes :)

chunk_split
la source
2

Voici ma méthode PowerShell

gci env:* | sort-object name | Where-Object {$_.Name -like "MyApp*"} | Foreach {"[System.Environment]::SetEnvironmentVariable('$($_.Name)', '$($_.Value)', 'Machine')"}

Ce qu'il fait

  1. Récupère toutes les variables d'environnement
  2. Les filtre
  3. Émet le PowerShell formaté nécessaire pour les recréer sur une autre machine (en supposant que tous sont définis au niveau de la machine)

Donc, après avoir exécuté ceci sur la machine source, transférez simplement la sortie sur la machine cible et exécutez (invite élevée si le réglage au niveau de la machine)

décret
la source