如何在Windows中导出和导入环境变量?


95

我发现很难让环境变量在不同的机器上保持同步。我只想从一台计算机导出设置,然后导入到另一台计算机。

我认为应该有可能,但不知道该怎么做。谁能帮我?谢谢。

Answers:


121

您可以使用RegEdit导出以下两个键:

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

HKEY_CURRENT_USER\Environment

第一组是系统/全局环境变量;第二组是用户级变量。根据需要进行编辑,然后将.reg文件导入新计算机。


2
运行程序regedit,突出显示有问题的键,然后使用“文件->导出”选项,将其保存为文件
Silvertiger 2014年

只需在拥有管理员权限的情况下双击.reg文件即可完成导入。
thanos.a,2016年

注意:这并不能获取所有环境变量(EV)!我只是做了一个命令设置路径,弄乱了我所有的EV。我去了这个注册表,只有原始的EV在那里。我进行了系统还原,并将所有丢失的EV返回PATH变量。该注册表仅包含一些必要的EV,但不包含程序的任何EV或您手动设置的任何路径。谨防!在命令行上:echo路径> mybackup.txt或设置> mybackup.txt,以获取ALL变量/路径和ALL SYS变量/路径上的整个备份。
ejbytes

@ejbytes这确实会复制您设置的全局变量,但是最好使用CLI而不是通过注册表将其导出。
亚历山大

88

我将使用命令提示符下的SET命令来导出所有变量,而不仅仅是上面建议的PATH。

C:\> SET >> allvariables.txt

要导入变量,可以使用一个简单的循环:

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

11
如何导入所有导出的环境。Vars。来自allvariables.txt

非常好。我只是失去了所有的路径变量,它们执行了错误的路径设置,不得不进行系统还原。幸运的是,截至今天早些时候,我有一个最近的更新。我只是使用此命令进行了备份。真好 该注册表解决方案仅包含原始var,而没有“创建”您(如程序员对新版本所说)或创建任何新安装的内容。
ejbytes,2013年

1
在Windows 7 64位上,如果在用户级别和系统级别有两个名称相同的变量,则此命令优先于用户级别的变量,并忽略系统级别的一。这种行为是有道理的,但认为如果有人期望每种变量类型都有完整的集合,可能值得一提。
GoldDragonTSU

1
该命令确实起作用:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow

1
要回答Ash,您可以在cmd提示符下使用简单的for循环来导入所有变量:for /F %A in (allvariables.txt) do SET %A
Gabriel

17

要导出用户变量,请打开命令提示符,然后将regedit与/ e一起使用

范例:

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

13

结合@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

3
今天的变量取决于%DATE%是依赖于Windows区域如何喜好。上面的命令不适用于印度。这有效-> 设置TODAY =%DATE:〜4,2%-%DATE:〜7,2%-%DATE:〜10.4%
Rakesh N

5

您可以在命令行或注册表中访问环境变量。

命令行

如果您想要一个特定的环境变量,则只需键入它的名称(例如PATH),后跟一个>,以及要写入的文件名。以下内容将PATH环境变量转储到名为path.txt的文件中。

C:\> PATH > path.txt

注册表方法

Windows注册表将所有环境变量保存在不同的位置,具体取决于要使用的设置。您可以使用注册表的“导入/导出”命令将它们移至另一台PC。

对于系统变量:

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

我最喜欢的方法是将其作为批处理脚本写出,以将用户变量和系统变量合并到一个备份文件中,如下所示,创建一个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(假设所有设置都在计算机级别设置)

因此,在源计算机上运行此命令后,只需将输出传输到目标计算机上并执行(如果在计算机级别进行设置,则提示升高)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.