วิธีการส่งออกและนำเข้าตัวแปรสภาพแวดล้อมใน windows?


98

ฉันพบว่ามันยากที่จะทำให้ตัวแปรสภาพแวดล้อมของฉันซิงค์กับเครื่องต่างๆ ฉันแค่ต้องการส่งออกการตั้งค่าจากคอมพิวเตอร์เครื่องหนึ่งและนำเข้าสู่เครื่องอื่น

คิดว่าน่าจะทำได้ แต่ไม่รู้จะทำยังไง ใครสามารถช่วยฉัน? ขอบคุณ.

คำตอบ:


123

คุณสามารถใช้ RegEdit เพื่อส่งออกสองคีย์ต่อไปนี้:

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

HKEY_CURRENT_USER\Environment

ชุดแรกคือตัวแปรสภาพแวดล้อมของระบบ / ส่วนกลาง ชุดที่สองคือตัวแปรระดับผู้ใช้ แก้ไขตามต้องการจากนั้นนำเข้าไฟล์. reg ในเครื่องใหม่


2
รันโปรแกรม regedit ไฮไลต์คีย์ที่เป็นปัญหาแล้วใช้ตัวเลือก "file -> export" เพื่อบันทึกเป็นไฟล์
Silvertiger

การนำเข้าทำได้ง่ายๆด้วยการดับเบิลคลิกที่ไฟล์. reg ในขณะที่มีสิทธิ์ระดับผู้ดูแลระบบ
thanos.a

หมายเหตุ: สิ่งนี้ไม่ได้รับตัวแปรสภาพแวดล้อม (EV) ทั้งหมด! ฉันเพิ่งกำหนดเส้นทางการตั้งค่าคำสั่งและทำให้ EV ทั้งหมดของฉันยุ่งเหยิง ฉันไปที่รีจิสทรีนี้และมีเพียง EV ดั้งเดิมเท่านั้นที่อยู่ที่นั่น ฉันทำการกู้คืนระบบและนำ EV ที่หายไปทั้งหมดกลับไปที่ PATH var รีจิสทรีนี้มี EV ที่จำเป็นเพียงไม่กี่รายการเท่านั้น แต่ไม่มี EV ของโปรแกรมของคุณหรือเส้นทางใด ๆ ที่คุณตั้งค่าด้วยตนเอง ระวัง! ในบรรทัดคำสั่ง: echo path> mybackup.txt หรือ set> mybackup.txt สำหรับการสำรองข้อมูลทั้งหมดบน ALL vars / paths และ ALL sys vars / paths
ejbytes

@ejbytes สิ่งนี้จะคัดลอกตัวแปรส่วนกลางของคุณที่คุณตั้งไว้ แต่น่าจะดีกว่าถ้าส่งออกด้วย CLI แทนที่จะส่งผ่านรีจิสทรี
Alexander

92

ฉันจะใช้คำสั่ง SET จากพรอมต์คำสั่งเพื่อส่งออกตัวแปรทั้งหมดแทนที่จะใช้แค่ PATH ตามที่แนะนำข้างต้น

C:\> SET >> allvariables.txt

ในการนำเข้าตัวแปรเราสามารถใช้การวนซ้ำแบบธรรมดา:

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

11
คุณจะนำเข้า Env. ที่ส่งออกทั้งหมดกลับคืนมาได้อย่างไร Vars จาก allvariables.txt
Ash

ดีมาก. ฉันเพิ่งสูญเสียเส้นทางทั้งหมดของฉันที่ทำชุดเส้นทางที่ไม่ดีและต้องทำการกู้คืนระบบ โชคดีที่ฉันมีการอัปเดตล่าสุด ณ วันนี้ก่อนหน้า ฉันเพิ่งทำการสำรองข้อมูลด้วยคำสั่งนี้ ดี. โซลูชันรีจิสทรีนั้นเก็บเฉพาะ vars ดั้งเดิม แต่ไม่มีสิ่งใดที่ "คุณ" (ตามที่โปรแกรมเมอร์บอกว่าสร้างใหม่) หรือสร้างการติดตั้งใหม่ใด ๆ
ejbytes

1
ใน Windows 7 64 บิตหากมีตัวแปรที่มีชื่อเหมือนกันสองตัวที่ระดับผู้ใช้และระดับระบบคำสั่งนี้จะให้ความสำคัญกับตัวแปรระดับผู้ใช้และละเว้นระดับระบบที่หนึ่ง พฤติกรรมนี้มีเหตุผล แต่คิดว่าอาจคุ้มค่าที่จะกล่าวถึงในกรณีที่ใครก็ตามคาดหวังว่าจะได้ชุดเต็มจากตัวแปรแต่ละประเภท
GoldDragonTSU

1
คำสั่งนี้ใช้งานได้:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow

1
ในการตอบ Ash คุณสามารถใช้วิธีง่ายๆสำหรับการวนซ้ำในพรอมต์ cmd เพื่อนำเข้าตัวแปรทั้งหมดกลับมา:for /F %A in (allvariables.txt) do SET %A
Gabriel

18

ในการเอ็กซ์พอร์ตตัวแปรผู้ใช้ให้เปิดพรอมต์คำสั่งและใช้ regedit กับ / e

ตัวอย่าง:

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

14

รวมคำตอบของ@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

4
วันนี้ตัวแปรขึ้นอยู่กับ% DATE%ซึ่งขึ้นอยู่กับวิธีการตั้งค่าของ Windows สถานที่เกิดเหตุ คำสั่งดังกล่าวใช้ไม่ได้กับอินเดีย ใช้งานได้ -> set TODAY =% DATE: ~ 4,2% -% DATE: ~ 7,2% -% DATE: ~ 10,4%
Rakesh N

5

คุณสามารถเข้าถึงตัวแปรสภาพแวดล้อมได้ทั้งในบรรทัดคำสั่งหรือในรีจิสทรี

บรรทัดคำสั่ง

หากคุณต้องการตัวแปรสภาพแวดล้อมเฉพาะให้พิมพ์ชื่อของมัน (เช่นPATH) ตามด้วย a >และชื่อไฟล์ที่จะเขียน สิ่งต่อไปนี้จะดัมพ์ตัวแปรสภาพแวดล้อม PATH ไปยังไฟล์ชื่อ path.txt

C:\> PATH > path.txt

วิธีการลงทะเบียน

Windows Registry เก็บตัวแปรสภาพแวดล้อมทั้งหมดไว้ในตำแหน่งต่างๆขึ้นอยู่กับว่าคุณอยู่ในชุดใด คุณสามารถใช้คำสั่งนำเข้า / ส่งออกรีจิสทรีเพื่อเปลี่ยนไปยังพีซีเครื่องอื่นได้

สำหรับตัวแปรระบบ:

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

สำหรับตัวแปรผู้ใช้:

HKEY_CURRENT_USER\Environment

1
บนเครื่องของฉัน PATH> (หรือ PATH >>) ส่งคืนไฟล์ข้อความว่างในขณะที่ SET >> ทำงาน Windows 7 x64 บิต
PatrickT

ทำงานให้ฉันบน Win7x64 ไม่แน่ใจว่าข้อกำหนดคืออะไร
Kissaki

คุณเรียกใช้คำสั่งนี้จากโฟลเดอร์ใด เหมืองบอกว่าไม่พบเส้นทาง
Azurespot

2

วิธีที่ฉันชอบที่สุดในการทำสิ่งนี้คือการเขียนออกมาเป็น 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สิ่งที่คุณสามารถใช้เพื่อนำเข้าตัวแปรสภาพแวดล้อมที่มีอยู่อีกครั้ง สิ่งนี้จะเพิ่มและลบล้างตัวแปรใหม่ แต่จะไม่ลบตัวแปรที่มีอยู่ :)


2

นี่คือวิธี PowerShell ของฉัน

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

มันทำอะไร

  1. ค้นหาตัวแปรสภาพแวดล้อมทั้งหมด
  2. กรองพวกเขา
  3. ปล่อย PowerShell ที่จัดรูปแบบไว้เพื่อสร้างขึ้นใหม่ในเครื่องอื่น (สมมติว่าทั้งหมดตั้งค่าไว้ที่ระดับเครื่อง)

ดังนั้นหลังจากเรียกใช้สิ่งนี้บนเครื่องต้นทางเพียงแค่โอนเอาต์พุตไปยังเครื่องเป้าหมายและดำเนินการ (พร้อมท์ที่ยกระดับหากตั้งค่าที่ระดับเครื่อง)


0

สคริปต์ 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"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.