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

如何在windows中导出和导入环境变量?,windows,environment-variables,windows-xp,Windows,Environment Variables,Windows Xp,我发现很难在不同的机器上保持环境变量的同步。我只想从一台计算机导出设置并导入到其他计算机 我认为这应该是可能的,但我不知道怎么做。有人能帮我吗?谢谢 您可以使用RegEdit导出以下两个键: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment HKEY_CURRENT_USER\Environment 第一组是系统/全局环境变量;第二组是用户级变量。根据需要进行编辑,然后在新机器上导入

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


我认为这应该是可能的,但我不知道怎么做。有人能帮我吗?谢谢

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

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

HKEY_CURRENT_USER\Environment

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

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

命令行

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

C:\> PATH > path.txt
注册表方法

Windows注册表将所有环境变量保存在不同的位置,具体位置取决于您要查找的环境变量集。您可以使用注册表导入/导出命令将它们转移到另一台电脑中

对于系统变量:

对于用户变量:


我将使用命令提示符中的SET命令导出所有变量,而不是像上面建议的那样仅导出路径

C:\> SET >> allvariables.txt
要导入变量,可以使用一个简单的循环:

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

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

例如:

regedit /e "%userprofile%\Desktop\my_user_env_variables.reg" "HKEY_CURRENT_USER\Environment"
结合和的答案进行一些修改

  • .reg
    导出到当前目录
  • 添加日期标记
  • 代码:

    产出如下:

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

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

    这将创建可用于重新导入现有环境变量的
    环境备份.reg
    。这将添加并覆盖新变量,但不会删除现有变量:)

    这是我的PowerShell方法

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

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

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

    一个基于@Mithrl的PowerShell脚本

    #export_env.ps1
    $Date=获取日期
    $DateStr='{0:dd-MM-yyyy}'-f$Date
    mkdir-强制$PWD\env|u导出为空
    regedit/e“$PWD\env\u exports\user\u env\u variables[$DateStr].reg”“HKEY\u CURRENT\u user\Environment”
    regedit/e“$PWD\env\u exports\global\u env\u variables[$DateStr].reg”“HKEY\u LOCAL\u MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment”
    
    在我的机器上,路径>(或路径>>)返回一个空文本文件,而SET>>工作。Windows 7 x64位。在Win7x64上为我工作。不确定要求是什么。从哪个文件夹执行此命令?我说找不到路径。运行程序regedit,突出显示有问题的键,然后使用“文件->导出”选项将其保存为文件导入只需在具有管理员权限的情况下双击.reg文件即可完成。注意:这并不能获取所有环境变量(EV)!我只是做了一个命令集路径,把我所有的EV都搞乱了。我去了这个登记处,那里只有原始的EV。我进行了系统还原,并将所有丢失的EV恢复到PATH var。此注册表仅保存一些必要的EV,但不保存任何程序的EV或手动设置的任何路径。当心!在命令行上:echo path>mybackup.txt或set>mybackup.txt,用于所有VAR/路径和所有sys VAR/路径上的整个备份。@ejbytes这会复制您设置的全局变量,但可能最好使用CLI而不是通过注册表导出它们。这是一种很好的用户友好的win方法!如何导入回所有导出的环境。瓦尔斯。来自allvariables.txt非常好。我刚刚丢失了所有路径变量,执行了一个错误的路径设置,不得不执行系统还原。幸运的是,今天早些时候我有一个最新的更新。我刚刚用这个命令做了备份。美好的该注册表解决方案只保存原始变量,而不保存“您”(程序员称之为新版本)创建的变量或任何新安装创建的变量。在64位Windows 7上,如果在用户级别和系统级别有两个同名变量,则此命令优先于用户级别变量,而忽略系统级别变量。这种行为是有道理的,但我认为如果有人希望每个变量类型都有完整的集合,那么它可能值得一提。此命令确实有效:
    set>“C:\Users\xx\Desktop\envir variable.txt”
    要回答Ash,可以在cmd提示符中使用一个简单的for循环来导入所有变量:
    for/F%a in(allvariables.txt)设置%A
    TODAY变量取决于%DATE%,这取决于Windows语言环境首选项的设置方式。上述命令不适用于印度。有效-->设置为今天=%DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4%
    global_env_variables[2017-02-14].reg
    user_env_variables[2017-02-14].reg
    
    @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"
    
    gci env:* | sort-object name | Where-Object {$_.Name -like "MyApp*"} | Foreach {"[System.Environment]::SetEnvironmentVariable('$($_.Name)', '$($_.Value)', 'Machine')"}