【bat】バッチファイルでシステム情報をレポート化する方法(msinfo32活用)

bat

Windows のシステム情報を一括してレポート化できるツールとして「msinfo32.exe」が標準搭載されています。GUI で表示するだけでなく、コマンドラインから実行すれば情報を自動的にファイルに保存できるため、バッチファイルと組み合わせることで定期的な情報収集やトラブルシューティングに役立ちます。ここでは msinfo32 を活用してシステム情報をレポート化する方法を解説します。

msinfo32コマンドの基本

msinfo32 は「システム情報」ツールの実体であり、/report または /nfo オプションを指定することで情報をファイル出力できます。/report はテキスト形式、/nfo は専用形式(XMLベース)で保存されます。

msinfo32 /report C:\temp\systeminfo.txt
msinfo32 /nfo C:\temp\systeminfo.nfo

/report は読みやすいレポートを作成するのに向き、/nfo はGUIで再度読み込んで解析したい場合に使います。

バッチファイルでレポートを自動出力

以下のバッチは、システム情報を日付付きのファイル名で保存する例です。定期的に実行することで履歴を残せます。

@echo off
setlocal

rem 保存先ディレクトリ
set "OUTDIR=C:\SysReport"
if not exist "%OUTDIR%" mkdir "%OUTDIR%"

rem 日付と時刻をファイル名に付与
set "DATESTR=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%"
set "DATESTR=%DATESTR: =0%"

rem テキスト形式で保存
set "REPORT=%OUTDIR%\systeminfo_%DATESTR%.txt"
msinfo32 /report "%REPORT%"

echo システム情報を "%REPORT%" に保存しました。

endlocal
pause

特定カテゴリだけを出力する

msinfo32 /categories オプションを使うと、システムサマリ、ハードウェアリソース、ソフトウェア環境などの特定セクションだけを出力可能です。例えばシステムサマリだけを出力する場合は次の通りです。

msinfo32 /report C:\temp\summary.txt /categories +systemsummary

複数カテゴリを指定することもできます。

ログ収集を定期化する

バッチファイルをタスクスケジューラに登録すれば、自動的にレポートが蓄積されます。以下は毎日午前1時にレポートを保存する例です。

@echo off
schtasks /create /tn "SystemReport" /tr "C:\SysReport\make_report.bat" /sc daily /st 01:00 /rl highest /f

レポート活用例

収集したレポートは以下のように役立ちます。
– 障害発生前後のシステム構成の比較
– ドライバやBIOSのバージョン確認
– 管理対象PCのインベントリ作成
– セキュリティ診断のエビデンス保存

まとめ

msinfo32 を使えば、Windows に標準搭載されたシステム情報をコマンドラインから一括出力できます。バッチファイルと組み合わせることで、定期的なレポート保存や障害解析の効率化につながります。/report でテキスト形式を出力すれば読みやすく、/nfo を使えばGUIで詳細解析が可能です。用途に応じて使い分け、タスクスケジューラで自動化するとさらに便利です。