Windows環境では、バッチファイルを使ってPCの起動時間や稼働時間を取得し、定期的にログとして保存することが可能です。システムの運用状況を記録したい場合や、障害対応のために稼働履歴を残しておきたい場合に非常に有用です。この記事では、実際に記録を行うためのバッチファイルの具体的な作成手順と、その内容を丁寧に解説していきます。
バッチファイルの動作概要
このバッチファイルでは、PCの現在時刻とシステム起動時間、そして稼働開始時間を取得し、それらの情報をテキスト形式でログに追記する仕組みになっています。起動時間は systeminfo コマンドから取得でき、稼働時間については net stats srv コマンドから得られる「統計は」項目を利用します。これにより、PCがどのタイミングで起動され、どれくらいの時間稼働しているかを簡単に可視化できます。
バッチファイルのソースコード
以下は、稼働記録用バッチファイルのサンプルコードです。このファイルを任意の名前で .bat 拡張子で保存し、ダブルクリックやタスクスケジューラから実行できるようにしておきます。
@echo off
setlocal enabledelayedexpansion
set "LOGFILE=%~dp0pc_uptime_log.txt"
for /f %%a in ('wmic os get LocalDateTime ^| find "."') do set datetime=%%a
set "year=%datetime:~0,4%"
set "month=%datetime:~4,2%"
set "day=%datetime:~6,2%"
set "hour=%datetime:~8,2%"
set "minute=%datetime:~10,2%"
set "second=%datetime:~12,2%"
set "now=%year%/%month%/%day% %hour%:%minute%:%second%"
for /f "tokens=1,* delims=:" %%a in ('systeminfo ^| find "システム起動時間"') do set "boot=%%b"
for /f "tokens=2,*" %%a in ('net stats srv ^| find /i "統計は"') do set "started=%%b"
echo ----------------------------- >> "%LOGFILE%"
echo 記録時刻 : %now% >> "%LOGFILE%"
echo 起動時刻 : %boot% >> "%LOGFILE%"
echo 稼働開始時刻: %started% >> "%LOGFILE%"
echo. >> "%LOGFILE%"
このスクリプトは、現在時刻を wmic os get LocalDateTime を使って取得した上で、年月日と時分秒を分解し、ログに記録するための整形を行っています。その後、systeminfo から取得した「システム起動時間」と、net stats srv から取得した「統計は」の時刻をそれぞれ取得し、ひとつのログファイルにまとめて書き出しています。
出力されるログの内容例
バッチファイルを実行すると、同じディレクトリ内に pc_uptime_log.txt というファイルが作成され、以下のような情報が追記されていきます。
-----------------------------
記録時刻 : 2025/05/11 17:12:33
起動時刻 : 2025/05/11, 6:48:23
稼働開始時刻: 2025/05/11 6:48:15
これにより、いつログが記録されたのか、そしてPCがいつ起動したのかが明確に残るため、管理記録として非常に役立ちます。
タスクスケジューラによる自動化
このバッチファイルをWindowsのタスクスケジューラに登録することで、PC起動時やログオン時に自動で記録を実行させることができます。スケジューラのトリガーには「ログオン時」や「スタートアップ時」を選ぶことで、ユーザーの操作なしに自動で実行できるようになります。記録のタイミングは運用に応じて変更可能です。
注意点と補足
使用している net stats srv コマンドは、Windows Homeエディションでは正常に機能しない場合があります。そのため、稼働時間の取得がうまくいかない場合には、PowerShellなどの代替手段を検討する必要があります。また、ログファイルが長期間で肥大化しすぎる場合に備え、古いログを削除する処理や、定期的にバックアップ・整理を行う仕組みを導入しておくとより安全です。
まとめ
バッチファイルを用いることで、PCの稼働状況を手軽に可視化し、運用記録として活用できます。手元の環境に合わせてログの保存形式や記録内容をカスタマイズすることで、より実践的な管理ツールとして構築可能です。定期的な稼働ログを残しておきたいケースでは、今回のようなシンプルな仕組みでも十分な効果が得られます。