Làm thế nào để xuất và nhập các biến môi trường trong windows?


95

Tôi thấy thật khó để giữ cho các biến môi trường của mình đồng bộ hóa trên các máy khác nhau. Tôi chỉ muốn xuất cài đặt từ một máy tính và nhập sang các máy khác.

Tôi nghĩ rằng nó nên có thể, nhưng không biết làm thế nào để làm điều đó. Ai giúp tôi với? Cảm ơn.

Câu trả lời:


121

Bạn có thể sử dụng RegEdit để xuất hai khóa sau:

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

HKEY_CURRENT_USER\Environment

Tập hợp đầu tiên là các biến môi trường toàn cầu / hệ thống; tập hợp thứ hai là các biến cấp người dùng. Chỉnh sửa nếu cần và sau đó nhập tệp .reg trên máy mới.


2
chạy regedit chương trình, làm nổi bật các phím trong câu hỏi và sau đó sử dụng "File -> Export" tùy chọn để tiết kiệm nó như là một tập tin
Silvertiger

việc nhập được thực hiện đơn giản bằng cách nhấp đúp vào tệp .reg trong khi có quyền quản trị.
thanos.a

LƯU Ý: Điều này không nhận được tất cả các Biến Môi trường (EV)! Tôi vừa thực hiện một đường dẫn đặt lệnh và làm rối tung tất cả EV của mình. Tôi đã đến cơ quan đăng ký này và chỉ có EV gốc ở đó. Tôi đã khôi phục hệ thống và đưa tất cả EV bị thiếu của mình trở lại var PATH. Sổ đăng ký này chỉ giữ một số EV cần thiết, nhưng không chứa bất kỳ EV nào trong chương trình của bạn cũng như bất kỳ đường dẫn nào bạn đặt theo cách thủ công. CẨN THẬN! Trên dòng lệnh: echo path> mybackup.txt hoặc set> mybackup.txt để sao lưu toàn bộ trên TẤT CẢ các vars / path và TẤT CẢ sys vars / path.
ejbytes

@ejbytes Thao tác này sao chép các biến toàn cục của bạn mà bạn đã đặt nhưng có lẽ tốt hơn là xuất chúng bằng CLI thay vì thông qua sổ đăng ký.
Alexander

88

Tôi sẽ sử dụng lệnh SET từ dấu nhắc lệnh để xuất tất cả các biến, thay vì chỉ PATH như đã đề xuất ở trên.

C:\> SET >> allvariables.txt

Để nhập các biến thể, người ta có thể sử dụng một vòng lặp đơn giản:

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

11
Làm cách nào để bạn nhập lại tất cả Env đã xuất. Vars. from allvariables.txt
Ash

Rất đẹp. Tôi vừa mất tất cả các vars đường dẫn của mình khi thiết lập đường dẫn xấu và phải khôi phục hệ thống. May mắn thay, tôi đã có một bản cập nhật gần đây vào ngày hôm nay sớm hơn. Tôi vừa sao lưu với lệnh này. Đẹp. Giải pháp đăng ký đó chỉ giữ các vars ban đầu, chứ không có gì mà "bạn" (như một lập trình viên nói đối với các bản dựng mới) đã tạo hoặc bất kỳ cài đặt mới nào được tạo.
ejbytes

1
Trên Windows 7 64-bit, nếu có hai biến được đặt tên giống nhau ở cấp Người dùng và cấp Hệ thống, lệnh này sẽ ưu tiên biến cấp Người dùng và bỏ qua cấp Hệ thống một. Hành vi này có ý nghĩa, nhưng nó có thể đáng được đề cập trong trường hợp bất kỳ ai đang mong đợi tập hợp đầy đủ từ mỗi loại biến.
GoldDragonTSU

1
lệnh này đã hoạt động:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow

1
Để trả lời Ash, bạn có thể sử dụng một vòng lặp for đơn giản trong lời nhắc cmd để nhập lại tất cả các biến:for /F %A in (allvariables.txt) do SET %A
Gabriel

17

Để xuất biến người dùng, hãy mở dấu nhắc lệnh và sử dụng regedit với / e

Thí dụ :

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

13

Kết hợp câu trả lời của @vincsilver@jdigital với một số sửa đổi,

  1. xuất .regsang thư mục hiện tại
  2. thêm dấu ngày

mã:

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"

Đầu ra như sau:

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

3
những TODAY biến phụ thuộc vào % NGÀY% là phụ thuộc vào cách Windows Locale sở thích. Lệnh trên không hoạt động đối với Ấn Độ. Điều này hoạt động -> đặt TODAY =% DATE: ~ 4,2% -% DATE: ~ 7,2% -% DATE: ~ 10,4%
Rakesh N

5

Bạn có thể truy cập vào các biến môi trường trong dòng lệnh hoặc trong sổ đăng ký.

Dòng lệnh

Nếu bạn muốn một biến môi trường cụ thể, thì chỉ cần nhập tên của nó (ví dụ PATH), theo sau là a >và tên tệp để ghi vào. Phần sau sẽ kết xuất biến môi trường PATH vào một tệp có tên là path.txt.

C:\> PATH > path.txt

Phương pháp đăng ký

Windows Registry lưu giữ tất cả các biến môi trường, ở những nơi khác nhau tùy thuộc vào thiết lập mà bạn đang theo đuổi. Bạn có thể sử dụng các lệnh Nhập / Xuất sổ đăng ký để chuyển chúng sang PC khác.

Đối với các biến hệ thống:

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

Đối với biến người dùng:

HKEY_CURRENT_USER\Environment

1
Trên máy của tôi, PATH> (hoặc PATH >>) trả về một tệp văn bản trống, trong khi SET >> hoạt động. Windows 7 x64 bit.
PatrickT

Làm việc cho tôi trên Win7x64. Không chắc chắn những gì các yêu cầu.
Kissaki

Bạn thực hiện lệnh này từ thư mục nào? Tôi nói không thể tìm thấy con đường.
Azurespot

2

Phương pháp yêu thích của tôi để làm điều này là viết nó ra dưới dạng tập lệnh lô để kết hợp cả biến người dùng và biến hệ thống vào một tệp sao lưu duy nhất như vậy, tạo một environment-backup.battệp và đặt vào đó:

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

Điều này tạo ra environment-backup.regmà bạn có thể sử dụng để nhập lại các biến môi trường hiện có. Điều này sẽ thêm & ghi đè các biến mới, nhưng không xóa các biến hiện có :)


2

Đây là phương pháp PowerShell của tôi

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

Những gì nó làm

  1. Tìm kiếm tất cả các biến môi trường
  2. Lọc chúng
  3. Phát ra PowerShell được định dạng cần thiết để tạo lại chúng trên một máy khác (giả sử tất cả đều được đặt ở cấp máy)

Vì vậy, sau khi chạy điều này trên máy nguồn, chỉ cần chuyển đầu ra vào máy đích và thực thi (lời nhắc nâng cao nếu thiết lập ở cấp máy)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.