Як експортувати та імпортувати змінні середовища у Windows?


95

Я виявив, що важко підтримувати синхронізацію змінних середовища на різних машинах. Я просто хочу експортувати налаштування з одного комп’ютера та імпортувати на інші.

Я думаю, що це повинно бути можливим, але я не знаю, як це зробити. Хто-небудь може мені допомогти? Дякую.

Відповіді:


121

Ви можете використовувати RegEdit для експорту наступних двох ключів:

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

HKEY_CURRENT_USER\Environment

Перший набір - це змінні системного / глобального середовища; другий набір - це змінні рівня користувача. За необхідності відредагуйте, а потім імпортуйте файли .reg на нову машину.


2
запустіть програму regedit, виділіть відповідні клавіші, а потім скористайтеся опцією "файл -> експорт", тому збережіть її як файл
Silvertiger

імпорт виконується просто подвійним клацанням файлу .reg, маючи права адміністратора.
thanos

ПРИМІТКА: Це не всі змінні середовища (EV)! Я просто пройшов шлях набору команд і зіпсував увесь свій EV. Я зайшов до цього реєстру, і там були лише оригінальні EV. Я відновив систему та повернув усі свої відсутні EV до змінної PATH. Цей реєстр містить лише кілька необхідних EV, але не будь-який EV вашої програми, а також будь-які шляхи, встановлені вами вручну. ОСТОРОЖНО! У командному рядку: echo path> mybackup.txt або set> mybackup.txt для всієї резервної копії на ВСІ vars / paths і ALL sys vars / paths.
ejbytes

@ejbytes Це копіює ваші глобальні змінні, які ви встановили, але, ймовірно, краще експортувати їх за допомогою CLI, а не через реєстр.
Олександр

88

Я б використовував команду SET з командного рядка для експорту всіх змінних, а не просто PATH, як рекомендовано вище.

C:\> SET >> allvariables.txt

Для імпорту змінних можна використати простий цикл:

C:\> for /F %A in (allvariables.txt) do SET %A

11
Як імпортувати назад всю експортовану Env. Vars. from allvariables.txt
Ash

Дуже хороша. Я просто втратив усі свої шляхи, роблячи неправильний шлях, і мені довелося відновити систему. На щастя, у мене було нещодавнє оновлення на сьогодні раніше. Я просто зробив резервну копію за допомогою цієї команди. Приємно. Це рішення реєстру містить лише оригінальні vars, але нічого, що було створено "вами" (як програміст каже для нових збірок) або створено будь-яку нову інсталяцію.
ejbytes

1
У Windows 7 64-розрядної версії, якщо на рівні користувача та системного рівня є дві однаково іменовані змінні, ця команда надає перевагу змінній рівня користувача та опускає системний рівень. Така поведінка має сенс, але вважав, що, можливо, варто згадати, якщо хтось очікував повного набору від кожного типу змінної.
GoldDragonTSU

1
ця команда справді спрацювала:set > "C:\Users\xx\Desktop\envir variable.txt"
ДжинСноу

1
Щоб відповісти на Ash, ви можете використати простий цикл for у підказці cmd, щоб імпортувати назад усі змінні:for /F %A in (allvariables.txt) do SET %A
Габріель

17

Щоб експортувати змінні користувача, відкрийте командний рядок і використовуйте regedit за допомогою / e

Приклад:

regedit /e "%userprofile%\Desktop\my_user_env_variables.reg" "HKEY_CURRENT_USER\Environment"

13

Поєднуйте відповіді @vincsilver та @jdigital з деякими змінами,

  1. експортувати .regдо поточного каталогу
  2. додати позначку дати

код:

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"

Результат хотів би:

global_env_variables[2017-02-14].reg
user_env_variables[2017-02-14].reg

3
СЬОГОДНІ змінна залежить від % DATE% , який залежить від того, як Windows , Locale переваг. Наведена команда не працює для Індії. Це працює -> встановити СЬОГОДНІ =% ДАТА: ~ 4,2% -% ДАТА: ~ 7,2% -% ДАТА: ~ 10,4%
Ракеш N

5

Ви можете отримати доступ до змінних середовища або в командному рядку, або в реєстрі.

Командний рядок

Якщо вам потрібна конкретна змінна середовища, просто введіть її назву (наприклад PATH), за якою слідує a >, та ім'я файлу для запису. Далі буде скинуто змінну середовища PATH у файл із іменем path.txt.

C:\> PATH > path.txt

Метод реєстру

Реєстр Windows зберігає всі змінні середовища в різних місцях, залежно від того, який набір вам потрібно. Ви можете використовувати команди реєстру Імпорт / Експорт, щоб перенести їх на інший ПК.

Для системних змінних:

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

Для змінних користувачів:

HKEY_CURRENT_USER\Environment

1
На моїй машині PATH> (або PATH >>) повернув порожній текстовий файл, тоді як SET >> працював. Біти Windows 7 x64.
PatrickT

Працював у мене на Win7x64. Не знаю, які вимоги.
Кіссакі

З якої папки ви виконуєте цю команду? Мій сказав, що не знайшов шляху.
Azurespot

2

Мій улюблений спосіб зробити це - записати його як пакетний скрипт, щоб поєднати як користувацькі змінні, так і системні змінні в один файл резервної копії, створивши environment-backup.batфайл і помістивши в нього:

@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"

Це створює, environment-backup.regякий ви можете використовувати для повторного імпорту існуючих змінних середовища. Це додасть і замінить нові змінні, але не видалить існуючі :)


2

Ось мій метод PowerShell

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

Що це робить

  1. Вибирає всі змінні середовища
  2. Фільтрує їх
  3. Випускає відформатовану PowerShell, необхідну для їх відтворення на іншій машині (передбачається, що всі вони встановлені на рівні машини)

Отже, після запуску цього на вихідній машині, просто перенесіть вихід на цільову машину і виконайте (підвищений підказка, якщо встановлено на рівні машини)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.