Windowsで環境変数をエクスポートおよびインポートする方法


95

別のマシンで環境変数を同期させるのは難しいと思いました。1台のコンピューターから設定をエクスポートし、他のコンピューターにインポートしたいだけです。

それは可能だと思いますが、それを行う方法がわかりません。誰か助けてもらえますか?ありがとう。

回答:


121

RegEditを使用して、次の2つのキーをエクスポートできます。

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

HKEY_CURRENT_USER\Environment

最初のセットはシステム/グローバル環境変数です。2番目のセットはユーザーレベルの変数です。必要に応じて編集し、.regファイルを新しいマシンにインポートします。


2
プログラムregeditを実行し、問題のキーを強調表示してから、「ファイル->エクスポート」オプションを使用してファイルとして保存します
Silvertiger

インポートは、管理者権限を持ちながら.regファイルをダブルクリックするだけで実行されます。
thanos.a 2016

注:これはすべての環境変数(EV)を取得するわけではありません!私はコマンドセットパスを実行し、すべてのEVを台無しにしました。このレジストリに行ったところ、元のEVしかありませんでした。私はシステムを復元し、行方不明のEVをすべてPATH変数に戻しました。このレジストリは必要なEVをいくつか保持しますが、プログラムのEVや手動で設定したパスは保持しません。注意してください!コマンドライン:echo path> mybackup.txtまたはset> mybackup.txt for all backups for ALL vars / paths and ALL sys vars / paths。
ejbytes

@ejbytesこれは、設定したグローバル変数をコピーしますが、レジストリではなくCLIを使用してエクスポートすることをお勧めします。
アレクサンダー

88

上記で推奨されているPATHだけでなく、コマンドプロンプトからSETコマンドを使用してすべての変数をエクスポートします。

C:\> SET >> allvariables.txt

変数をインポートするには、単純なループを使用できます。

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

11
エクスポートされたすべての環境をどのようにインポートしますか?Vars。allvariables.txtから
Ash

非常に素晴らしい。不正なパスセットを実行しているため、すべてのパス変数が失われ、システムを復元する必要がありました。幸いなことに、私は今日以前に最近の更新をしました。このコマンドでバックアップを作成しました。いいね。そのレジストリソリューションは、元の変数のみを保持しますが、(プログラマが新しいビルドについて言うように)作成した「あなた」や、作成した新しいインストールは保持しません。
ejbytes

1
Windows 7 64ビットでは、ユーザーレベルとシステムレベルに同じ名前の変数が2つある場合、このコマンドはユーザーレベル変数を優先し、システムレベル1を省略します。この振る舞いは理にかなっていますが、誰かが各変数型からの完全なセットを期待している場合に備えて、言及する価値があるかもしれないと考えました。
GoldDragonTSU

1
このコマンドは機能しました:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow

1
:アッシュに答えるために、あなたが戻ってすべての変数をインポートするために、CMDプロンプトでループするための単純なを使用することができますfor /F %A in (allvariables.txt) do SET %A
ガブリエル

17

ユーザー変数をエクスポートするには、コマンドプロンプトを開き、/ eを指定してregeditを使用します。

例:

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
TODAYの変数はに依存%のDATE%をどのようにWindowsのロケール設定に依存しています。上記のコマンドはインドでは機能しません。これは機能します-> 設定TODAY =%DATE:〜4,2%
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 2013

Win7x64で私のために働いた。要件が何かわからない。
Kissaki 2013年

このコマンドはどのフォルダから実行しますか?鉱山は道が見つからなかったと言いました。
Azurespot

2

これを行うための私のお気に入りの方法は、ユーザー変数とシステム変数の両方を1つのバックアップファイルに結合するバッチスクリプトとして記述し、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を発行します(すべてがマシンレベルで設定されていると想定)

したがって、これをソースマシンで実行した後、出力をターゲットマシンに転送して実行するだけです(マシンレベルで設定している場合は昇格したプロンプト)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.