Bagaimana cara mengekspor dan mengimpor variabel lingkungan di windows?

97

Saya merasa sulit untuk menjaga sinkronisasi variabel lingkungan saya pada mesin yang berbeda. Saya hanya ingin mengekspor pengaturan dari satu komputer dan mengimpor ke komputer lain.

Saya pikir itu harus mungkin, tetapi tidak tahu bagaimana melakukannya. Ada yang bisa bantu saya? Terima kasih.

max_y
sumber

Jawaban:

123

Anda dapat menggunakan RegEdit untuk mengekspor dua kunci berikut:

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

HKEY_CURRENT_USER\Environment

Set pertama adalah variabel lingkungan sistem / global; set kedua adalah variabel tingkat pengguna. Edit seperlunya dan kemudian impor file .reg di komputer baru.

jdigital.digital
sumber
2
jalankan program regedit, sorot kunci yang dimaksud dan kemudian gunakan opsi "file -> export" jadi simpan sebagai file
Silvertiger
pengimporan dilakukan hanya dengan mengklik dua kali file .reg sementara memiliki izin admin.
thanos.a
CATATAN: Ini tidak mendapatkan semua Variabel Lingkungan (EV)! Saya baru saja melakukan jalur set perintah dan mengacaukan semua EV saya. Saya pergi ke registri ini dan hanya EV asli yang ada. Saya melakukan pemulihan sistem dan mengembalikan semua EV saya yang hilang ke var PATH. Registri ini hanya menampung beberapa EV yang diperlukan, tetapi tidak ada EV program Anda atau jalur apa pun yang Anda tetapkan secara manual. AWAS! Pada baris perintah: echo path> mybackup.txt atau set> mybackup.txt untuk seluruh backup pada SEMUA vars / paths dan SEMUA sys vars / paths.
ejbytes
@ejbytes Ini menyalin variabel global yang Anda setel tetapi mungkin lebih baik mengekspornya dengan CLI daripada melalui registri.
Alexander
91

Saya akan menggunakan perintah SET dari command prompt untuk mengekspor semua variabel, bukan hanya PATH seperti yang direkomendasikan di atas.

C:\> SET >> allvariables.txt

Untuk mengimpor variabel, seseorang dapat menggunakan loop sederhana:

C:\> for /F %A in (allvariables.txt) do SET %A
Kushal Paudyal
sumber
11
Bagaimana Anda mengimpor kembali semua file Env. Vars. dari allvariables.txt
Ash
Sangat bagus. Saya baru saja kehilangan semua vars jalur saya yang melakukan set jalur yang buruk dan harus melakukan pemulihan sistem. Untungnya saya mendapat update terbaru pada hari ini sebelumnya. Saya baru saja melakukan backup dengan perintah ini. Bagus. Solusi registri itu hanya menyimpan vars asli, tetapi tidak ada yang dibuat oleh "Anda" (seperti yang dikatakan programmer untuk build baru) atau semua penginstalan baru yang dibuat.
ejbytes
1
Pada Windows 7 64-bit, jika ada dua variabel dengan nama yang sama di tingkat Pengguna dan tingkat Sistem, perintah ini mendahulukan variabel tingkat Pengguna dan menghilangkan tingkat Sistem satu. Perilaku ini masuk akal, tetapi menurut saya mungkin perlu disebutkan jika ada yang mengharapkan set lengkap dari setiap jenis variabel.
GoldDragonTSU
1
perintah ini berhasil:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow
1
Untuk menjawab Ash, Anda dapat menggunakan loop for sederhana di prompt cmd untuk mengimpor kembali semua variabel:for /F %A in (allvariables.txt) do SET %A
Gabriel
18

Untuk mengekspor variabel pengguna, buka prompt perintah dan gunakan regedit dengan / e

Contoh:

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

Gabungkan jawaban @vincsilver dan @jdigital dengan beberapa modifikasi,

  1. ekspor .regke direktori saat ini
  2. tambahkan tanda tanggal

kode:

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"

Outputnya seperti:

global_env_variables[2017-02-14].reg
user_env_variables[2017-02-14].reg
Mithril
sumber
4
yang TODAY variabel tergantung pada % DATE% yang tergantung pada bagaimana preferensi Windows Lokal. Perintah di atas tidak berfungsi untuk India. Ini berfungsi -> atur HARI INI =% TANGGAL: ~ 4,2% -% TANGGAL: ~ 7,2% -% TANGGAL: ~ 10,4%
Rakesh N
5

Anda bisa mendapatkan akses ke variabel lingkungan baik di baris perintah atau di registri.

Garis komando

Jika Anda menginginkan variabel lingkungan tertentu, ketikkan saja namanya (misalnya PATH), diikuti dengan a >, dan nama file yang akan dituju. Berikut ini akan membuang variabel lingkungan PATH ke file bernama path.txt.

C:\> PATH > path.txt

Metode Registri

Registri Windows menampung semua variabel lingkungan, di tempat yang berbeda tergantung pada set yang Anda cari. Anda dapat menggunakan perintah Impor / Ekspor registri untuk memindahkannya ke PC lain.

Untuk Variabel Sistem:

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

Untuk Variabel Pengguna:

HKEY_CURRENT_USER\Environment
Gavin Bunney
sumber
1
Di mesin saya, PATH> (atau PATH >>) mengembalikan file teks kosong, sementara SET >> berfungsi. Windows 7 x64 bit.
PatrickT
Bekerja untuk saya di Win7x64. Tidak yakin apa persyaratannya.
Kissaki
Dari folder mana Anda menjalankan perintah ini? Punyaku mengatakan tidak dapat menemukan jalan.
Azurespot
2

Metode favorit saya untuk melakukan ini adalah menuliskannya sebagai skrip batch untuk menggabungkan variabel pengguna dan variabel sistem ke dalam satu file cadangan seperti itu, buat environment-backup.batfile dan masukkan:

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

Ini menciptakan environment-backup.regyang dapat Anda gunakan untuk mengimpor ulang variabel lingkungan yang ada. Ini akan menambah & menimpa variabel baru, tetapi tidak menghapus yang sudah ada :)

chunk_split
sumber
2

Inilah metode PowerShell saya

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

Apa yang dilakukannya

  1. Mengambil semua variabel lingkungan
  2. Filter mereka
  3. Memancarkan PowerShell yang diformat yang diperlukan untuk membuatnya kembali di komputer lain (mengasumsikan semua disetel pada tingkat mesin)

Jadi setelah menjalankan ini di mesin sumber, cukup transfer output ke mesin target dan jalankan (prompt yang ditinggikan jika menyetel pada level mesin)

perintah
sumber
0

Skrip PowerShell berdasarkan jawaban @ Mithrl

# export_env.ps1
$Date = Get-Date
$DateStr = '{0:dd-MM-yyyy}' -f $Date

mkdir -Force $PWD\env_exports | Out-Null

regedit /e "$PWD\env_exports\user_env_variables[$DateStr].reg" "HKEY_CURRENT_USER\Environment"
regedit /e "$PWD\env_exports\global_env_variables[$DateStr].reg" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Phani Rithvij
sumber