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

max*_*x_y 78 windows windows-xp environment-variables

我发现很难让我的环境变量在不同的机器上保持同步.我只想从一台计算机导出设置并导入到其他计算机.

我认为它应该是可能的,但不知道该怎么做.谁能帮我?谢谢.

jdi*_*tal 105

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

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

HKEY_CURRENT_USER\Environment
Run Code Online (Sandbox Code Playgroud)

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

  • 运行程序regedit,突出显示有问题的键,然后使用"文件 - >导出"选项,将其保存为文件 (2认同)

Kus*_*yal 76

我将使用命令提示符中的SET命令导出所有变量,而不是像上面推荐的那样导出PATH.

C:\> SET >> allvariables.txt
Run Code Online (Sandbox Code Playgroud)

  • 如何导回所有导出的环境.瓦尔.来自allvariables.txt (5认同)
  • 在 Windows 10 中,导入时,我相信大多数用户会希望使用“SETX”而不是“SET”——以使更改永久化。(不必每次打开新命令窗口时都进行导入。) (3认同)
  • 在 Windows 7 64 位上,如果用户级别和系统级别有两个相同名称的变量,则此命令优先考虑用户级别变量并忽略系统级别一。这种行为是有道理的,但我认为如果有人期望每个变量类型的完整集,则可能值得一提。 (2认同)

小智 15

要导出用户变量,请打开命令提示符并使用/ e进行regedit

示例:

regedit /e "%userprofile%\Desktop\my_user_env_variables.reg" "HKEY_CURRENT_USER\Environment"
Run Code Online (Sandbox Code Playgroud)


Mit*_*ril 9

结合@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"
Run Code Online (Sandbox Code Playgroud)

输出结果如下:

global_env_variables[2017-02-14].reg
user_env_variables[2017-02-14].reg
Run Code Online (Sandbox Code Playgroud)

  • **TODAY**变量取决于**%DATE%**,这取决于Windows Locale首选项的方式.上述命令对印度不起作用.这工作 - > _set TODAY =%DATE:~4,2% - %DATE:~7,2% - %DATE:~10,4%_ (3认同)

Gav*_*ney 7

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

命令行

如果你想要一个特定的环境变量,那么只需输入它的名称(例如PATH),然后输入'>'和要写入的文件名.以下内容将PATH环境变量转储到名为path.txt的文件中.

C:\> PATH > path.txt
Run Code Online (Sandbox Code Playgroud)

注册表方法

Windows注册表包含所有环境变量,位于不同的位置,具体取决于您所使用的集合.您可以使用注册表导入/导出命令将它们转移到另一台PC.

对于系统变量:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Run Code Online (Sandbox Code Playgroud)

对于用户变量:

HKEY_CURRENT_USER\Environment
Run Code Online (Sandbox Code Playgroud)


chu*_*lit 5

我最喜欢的方法是将其写为批处理脚本,将用户变量和系统变量组合到一个备份文件中,如下所示,创建一个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"
Run Code Online (Sandbox Code Playgroud)

这将创建environment-backup.reg您可以用来重新导入现有环境变量的变量。这将添加并覆盖新变量,但不会删除现有变量:)


fia*_*iat 5

这是我的 PowerShell 方法

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

它能做什么

  1. 获取所有环境变量
  2. 过滤它们
  3. 发出在另一台计算机上重新创建它们所需的格式化 PowerShell(假设所有内容均在计算机级别设置)

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