ここではWindowsのバッチファイルを実行して処理時間を計測する方法について紹介します。

PowerShellで経過時間を計算する

このバッチは、処理の開始時刻と終了時刻を取得し、PowerShellを使って処理にかかった経過時間を計算して表示するものです。

@echo off

set START=%TIME%

timeout /t 5 >nul

set END=%TIME%

echo 開始時刻 : %START%
echo 終了時刻 : %END%

powershell -NoProfile -Command "$s=[datetime]'%START%'; $e=[datetime]'%END%'; Write-Host ('経過時間 : ' + ($e-$s).ToString('hh\:mm\:ss\.ff'))"

PAUSE


実行結果

開始時刻 : 15:30:10.12
終了時刻 : 15:30:15.16
経過時間 : 00:00:05.04
続行するには何かキーを押してください . . .

【解説】
timeout /t 5 >nul
>nul で「○ 秒待っています。続行するには何かキーを押してください…」のようなカウントダウンメッセージを非表示にしています。
powershell -NoProfile -Command
→ PowerShellを起動して処理を実行します。
“$s=[datetime]’%START%’;
→ 開始時刻を日時データに変換して $s に格納します。
$e=[datetime]’%END%’;
→ 終了時刻を日時データに変換して $e に格納します。
Write-Host (‘経過時間 : ‘ +
→ 「経過時間 :」を付けて画面に表示します。
($e-$s).ToString(‘hh\:mm\:ss.ff’))”
→ 終了時刻から開始時刻を引いて経過時間を計算して「時:分:秒.1/100秒」の形式に変換します。

標準コマンドだけで経過時間を計算する

このバッチは、PowerShellを使わず、Windowsの標準コマンドだけで経過時間を計算して表示するものです。ただし、この方法は日付をまたぐ処理には対応していません。

@echo off

set START=%TIME%

timeout /t 5 >nul

set END=%TIME%

echo 開始時刻 : %START%
echo 終了時刻 : %END%

set /a START_SEC=(1%START:~0,2%-100)*3600 + (1%START:~3,2%-100)*60 + (1%START:~6,2%-100)
set /a END_SEC=(1%END:~0,2%-100)*3600 + (1%END:~3,2%-100)*60 + (1%END:~6,2%-100)

set /a ELAPSED=END_SEC-START_SEC

echo 経過時間 : %ELAPSED% 秒

PAUSE


実行結果

開始時刻 : 16:03:29.80
終了時刻 : 16:03:34.16
経過時間 : 5 秒
続行するには何かキーを押してください . . .

【解説】
set /a ELAPSED=END_SEC-START_SEC
→ 終了時刻を秒に変換した値(END_SEC)から開始時刻を秒に変換した値(START_SEC)を引き、その差を経過時間として ELAPSED に格納しています。



以上、Windowsのバッチファイルを実行して処理時間を計測する方法について解説しました。