Windows ortam değişkenleri nasıl dışa ve içe aktarılır?


99

Ortam değişkenlerimi farklı makinelerde eşit tutmanın zor olduğunu anladım. Sadece ayarları bir bilgisayardan diğerine aktarmak istiyorum.

Sanırım mümkün olmalı ama nasıl yapılacağını bilmiyorum. Biri bana yardım edebilir mi? Teşekkürler.

Yanıtlar:


124

RegEdit'i aşağıdaki iki anahtarı dışa aktarmak için kullanabilirsiniz:

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

HKEY_CURRENT_USER\Environment

İlk set, sistem / global ortam değişkenleridir; ikinci küme, kullanıcı düzeyindeki değişkenlerdir. Gerektiği gibi düzenleyin ve ardından .reg dosyalarını yeni makineye aktarın.


2
regedit programını çalıştırın, söz konusu anahtarları vurgulayın ve ardından "dosya -> dışa aktar" seçeneğini kullanın, böylece dosyayı bir dosya olarak kaydedin
Silvertiger

içe aktarma işlemi, yönetici izinlerine sahipken .reg dosyasına çift tıklanarak yapılır.
thanos.a

NOT: Bu, tüm Ortam Değişkenlerini (EV) almaz! Sadece bir komut seti yolu yaptım ve tüm EV'mi bozdum. Bu kayıt defterine gittim ve sadece orijinal EV oradaydı. Bir sistem geri yüklemesi yaptım ve tüm eksik EV'imi PATH var. Bu kayıt defteri yalnızca birkaç gerekli EV'yi tutar, ancak programınızın EV'sinden veya manuel olarak ayarladığınız yollardan hiçbirini içermez. DİKKAT! Bir komut satırında: TÜM değişkenler / yollar ve TÜM sistem değişkenleri / yolları üzerindeki tüm yedekleme için yankı yolu> mybackup.txt veya set> mybackup.txt.
ejbytes

@ejbytes Bu, ayarladığınız genel değişkenlerinizi kopyalar, ancak bunları kayıt defteri yerine CLI ile dışa aktarmak muhtemelen daha iyidir.
Alexander

93

Yukarıda önerildiği gibi sadece PATH yerine tüm değişkenleri dışa aktarmak için komut isteminden SET komutunu kullanırdım.

C:\> SET >> allvariables.txt

Değişkenleri içe aktarmak için basit bir döngü kullanılabilir:

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

12
Dışa aktarılan tüm Env. Vars. allvariables.txt'den
Kül

Çok hoş. Kötü bir yol kümesi yaparken tüm yolumu kaybettim ve bir sistem geri yüklemesi yapmak zorunda kaldım. Şans eseri bugün daha önce yeni bir güncellemem vardı. Bu komutla bir yedekleme yaptım. Güzel. Bu kayıt defteri çözümü yalnızca orijinal değişkenleri tutar, ancak "sizin" (bir programcının yeni derlemeler için söylediği gibi) oluşturduğu veya yeni bir kurulum oluşturduğu hiçbir şeyi tutmaz.
ejbytes

1
Windows 7 64 bit'te, Kullanıcı düzeyinde ve Sistem düzeyinde aynı şekilde adlandırılmış iki değişken varsa, bu komut Kullanıcı düzeyi değişkenine öncelik verir ve Sistem düzeyini atlar. Bu davranış mantıklıdır, ancak herhangi birinin her değişken türünden tam set beklemesi durumunda bahsetmeye değer olabileceğini düşündü.
GoldDragonTSU

1
bu komut işe set > "C:\Users\xx\Desktop\envir variable.txt"
yaradı

1
Ash'i yanıtlamak için, tüm değişkenleri geri almak için cmd komut isteminde basit bir for döngüsü kullanabilirsiniz:for /F %A in (allvariables.txt) do SET %A
Gabriel

18

Kullanıcı değişkenlerini dışa aktarmak için bir komut istemi açın ve / e ile regedit kullanın

Misal :

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

14

Birleştirin @vincsilver ve @jdigital bazı değişikliklerle 'ın cevapları,

  1. .regmevcut dizine aktar
  2. tarih işareti ekle

kod:

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"

Çıktı şunun gibi olur:

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

4
BUGÜN değişken bağlıdır % DATE% nasıl, Windows Yerel Ayar tercihlerine bağlıdır. Yukarıdaki komut Hindistan için çalışmıyor. Bu çalışır -> BUGÜN =% TARİH: ~% 4,2 -% TARİH: ~% 7,2 -% TARİH: ~% 10,4
Rakesh N

5

Ortam değişkenlerine komut satırından veya kayıt defterinden erişebilirsiniz.

Komut satırı

Belirli bir ortam değişkeni istiyorsanız, sadece adını (örneğin PATH), ardından >a'yı ve yazılacak dosya adını yazın. Aşağıdakiler, PATH ortam değişkenini path.txt adlı bir dosyaya dökecektir.

C:\> PATH > path.txt

Kayıt Yöntemi

Windows Kayıt Defteri, peşinde olduğunuz kümeye bağlı olarak tüm ortam değişkenlerini farklı yerlerde tutar. Bunları diğer PC'ye kaydırmak için kayıt defterinin Import / Export komutlarını kullanabilirsiniz.

Sistem Değişkenleri için:

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

Kullanıcı Değişkenleri için:

HKEY_CURRENT_USER\Environment

1
Makinemde, PATH> (veya PATH >>) SET >> çalışırken boş bir metin dosyası döndürdü. Windows 7 x64 bitleri.
PatrickT

Benim için Win7x64'te çalıştı. Gereksinimlerin ne olduğundan emin değilim.
Kissaki

Bu komutu hangi klasörden çalıştırıyorsunuz? Benimki yol bulamadığını söyledi.
Azurespot

2

Bunu yapmak için en sevdiğim yöntem, hem kullanıcı değişkenlerini hem de sistem değişkenlerini tek bir yedekleme dosyasında birleştirmek için bir toplu komut dosyası olarak yazmak, bir environment-backup.batdosya oluşturmak ve içine koymaktır:

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

Bu, environment-backup.regmevcut ortam değişkenlerini yeniden içe aktarmak için kullanabileceğiniz oluşturur . Bu olacak eklemek ve geçersiz yeni değişkenleri, ama değil mevcut olanları silin :)


2

İşte benim PowerShell yöntemim

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

Bu ne yapar

  1. Tüm ortam değişkenlerini toplar
  2. Onları filtreler
  3. Bunları başka bir makinede yeniden oluşturmak için gereken biçimlendirilmiş PowerShell'i yayar (tümünün makine düzeyinde ayarlandığını varsayar)

Bu nedenle, bunu kaynak makinede çalıştırdıktan sonra, çıktıyı hedef makineye aktarın ve çalıştırın (makine düzeyinde ayarlıysa yükseltilmiş komut istemi)


0

Mithrl en @ dayalı bir PowerShell komut dosyası cevap

# 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"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.