ฉันพบว่ามันยากที่จะทำให้ตัวแปรสภาพแวดล้อมของฉันซิงค์กับเครื่องต่างๆ ฉันแค่ต้องการส่งออกการตั้งค่าจากคอมพิวเตอร์เครื่องหนึ่งและนำเข้าสู่เครื่องอื่น
คิดว่าน่าจะทำได้ แต่ไม่รู้จะทำยังไง ใครสามารถช่วยฉัน? ขอบคุณ.
ฉันพบว่ามันยากที่จะทำให้ตัวแปรสภาพแวดล้อมของฉันซิงค์กับเครื่องต่างๆ ฉันแค่ต้องการส่งออกการตั้งค่าจากคอมพิวเตอร์เครื่องหนึ่งและนำเข้าสู่เครื่องอื่น
คิดว่าน่าจะทำได้ แต่ไม่รู้จะทำยังไง ใครสามารถช่วยฉัน? ขอบคุณ.
คำตอบ:
คุณสามารถใช้ RegEdit เพื่อส่งออกสองคีย์ต่อไปนี้:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
HKEY_CURRENT_USER\Environment
ชุดแรกคือตัวแปรสภาพแวดล้อมของระบบ / ส่วนกลาง ชุดที่สองคือตัวแปรระดับผู้ใช้ แก้ไขตามต้องการจากนั้นนำเข้าไฟล์. reg ในเครื่องใหม่
ฉันจะใช้คำสั่ง SET จากพรอมต์คำสั่งเพื่อส่งออกตัวแปรทั้งหมดแทนที่จะใช้แค่ PATH ตามที่แนะนำข้างต้น
C:\> SET >> allvariables.txt
ในการนำเข้าตัวแปรเราสามารถใช้การวนซ้ำแบบธรรมดา:
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
ในการเอ็กซ์พอร์ตตัวแปรผู้ใช้ให้เปิดพรอมต์คำสั่งและใช้ regedit กับ / e
ตัวอย่าง:
regedit /e "%userprofile%\Desktop\my_user_env_variables.reg" "HKEY_CURRENT_USER\Environment"
รวมคำตอบของ@vincsilverและ@jdigital เข้ากับการปรับเปลี่ยนบางอย่าง
.reg
ไปยังไดเร็กทอรีปัจจุบันรหัส:
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
คุณสามารถเข้าถึงตัวแปรสภาพแวดล้อมได้ทั้งในบรรทัดคำสั่งหรือในรีจิสทรี
บรรทัดคำสั่ง
หากคุณต้องการตัวแปรสภาพแวดล้อมเฉพาะให้พิมพ์ชื่อของมัน (เช่นPATH
) ตามด้วย a >
และชื่อไฟล์ที่จะเขียน สิ่งต่อไปนี้จะดัมพ์ตัวแปรสภาพแวดล้อม PATH ไปยังไฟล์ชื่อ path.txt
C:\> PATH > path.txt
วิธีการลงทะเบียน
Windows Registry เก็บตัวแปรสภาพแวดล้อมทั้งหมดไว้ในตำแหน่งต่างๆขึ้นอยู่กับว่าคุณอยู่ในชุดใด คุณสามารถใช้คำสั่งนำเข้า / ส่งออกรีจิสทรีเพื่อเปลี่ยนไปยังพีซีเครื่องอื่นได้
สำหรับตัวแปรระบบ:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
สำหรับตัวแปรผู้ใช้:
HKEY_CURRENT_USER\Environment
วิธีที่ฉันชอบที่สุดในการทำสิ่งนี้คือการเขียนออกมาเป็น batch script เพื่อรวมทั้งตัวแปรผู้ใช้และตัวแปรระบบไว้ในไฟล์สำรองไฟล์เดียวเช่นนั้นสร้าง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
สิ่งที่คุณสามารถใช้เพื่อนำเข้าตัวแปรสภาพแวดล้อมที่มีอยู่อีกครั้ง สิ่งนี้จะเพิ่มและลบล้างตัวแปรใหม่ แต่จะไม่ลบตัวแปรที่มีอยู่ :)
นี่คือวิธี PowerShell ของฉัน
gci env:* | sort-object name | Where-Object {$_.Name -like "MyApp*"} | Foreach {"[System.Environment]::SetEnvironmentVariable('$($_.Name)', '$($_.Value)', 'Machine')"}
มันทำอะไร
ดังนั้นหลังจากเรียกใช้สิ่งนี้บนเครื่องต้นทางเพียงแค่โอนเอาต์พุตไปยังเครื่องเป้าหมายและดำเนินการ (พร้อมท์ที่ยกระดับหากตั้งค่าที่ระดับเครื่อง)
สคริปต์ PowerShell ตามคำตอบของ @ 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"