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:
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.
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
set > "C:\Users\xx\Desktop\envir variable.txt"
for /F %A in (allvariables.txt) do SET %A
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"
Birleştirin @vincsilver ve @jdigital bazı değişikliklerle 'ın cevapları,
.reg
mevcut dizine aktarkod:
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
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
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.bat
dosya 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.reg
mevcut 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 :)
İş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
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)
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"