(個人バックアップ用) Windows の環境情報を一発で保存するバッチファイル


Windows には色んなアプリをインストールしたり環境変数やらネットワーク設定やらを変えたりしますが、ちゃんとメモしておかないと新しい PC に移る時に困ります。

というわけで環境情報を一発で出力するバッチファイルを書いてみました。

バッチファイルと使い方

バッチファイル本体:

@echo off
prompt $$ 
setlocal
@echo on

rem [ProgramFiles]
dir /w /b "c:\program files" > programfiles.txt
dir /w /b "c:\program files (x86)" > programfiles_x86.txt

rem [SystemConfig]
set > set.txt
ipconfig /all > ipconfig.txt
route print > route.txt

rem [Application]
python --version > python_version.txt
pip freeze > pip_freeze.txt
git --version > git_version.txt
call npm --version > npm_version.txt
call npm list -g > npm_list_global.txt

rem [Registry]
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" > reg_au.txt
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites" > reg_registry_editor_favorites.txt

pause

これを適当な名前( XXXX.bat )で適当なフォルダに保存した後、保存した bat ファイルをダブルクリック等で開きます。そうすると、そのフォルダ内に次々とテキストファイルが保存されますので、それらをバックアップします。

新しい PC でセットアップを行う際は、保存しておいたテキストファイルの中身を見てバージョンやら設定やらを確認しながら作業します。

保存するもの

  • インストールしたアプリケーションの名前
  • 環境変数
  • IP, DNS 情報
  • ルートテーブル
  • アプリケーションのバージョン
  • パッケージ管理ツールにてインストールしたパッケージ一覧
  • 指定レジストリキー内にあるエントリとその値

他に保存したい情報がある場合、上記を参考にして追記していってください。

細かい解説

ProgramFiles については tree "c:\program files" を使えばサブフォルダも含めて出力できますが、実行時間とファイルサイズが桁違いに増えます……。

python は 2.x だと python --version 2> python_version.txt みたいに、標準エラー出力をリダイレクトしてやらないと保存できないかもしれません。

npm コマンドはラッパーバッチの関係で call コマンド経由で呼ばないと動作しません。

レジストリはもし普段からいじっている場合は併せてバックアップしておくといいでしょう(上記は Windows Update 設定とレジストリエディタのお気に入りデータです)。レジストリエディタの .reg エクスポートを使う手もありますが、GUI からポチポチやらないといけなくて面倒くさいです(その代わり .reg ファイルを実行するだけで適用できるので楽です)。

おわりに

他にも「こんなやり方でこんな情報を保存しておくとオススメだよ!」的なのがありましたらぜひ教えてください