バッチファイルで経過時間を取得するには
バッチファイル内で経過時間を取得するには、以下の手順を試してみることができます。ここでは、Windowsのバッチファイルを使用する方法を説明します。
- 開始時刻の取得: バッチファイルを実行する直前に、開始時刻を取得します。これには、%date% と %time% 変数を使用します。以下のコード例をご覧ください。
@echo off
setlocal
REM 開始時刻を取得
set "start_date=%date%"
set "start_time=%time%"
REM 開始時刻の表示
echo 開始時刻: %start_date% %start_time%
REM ここに実行したいコマンドを記述
endlocal
- 終了時刻の取得: 実行が終了した後、終了時刻を取得します。
@echo off
setlocal
REM 開始時刻を取得
set "start_date=%date%"
set "start_time=%time%"
REM ここに実行したいコマンドを記述
REM 終了時刻を取得
set "end_date=%date%"
set "end_time=%time%"
REM 開始時刻と終了時刻の表示
echo 開始時刻: %start_date% %start_time%
echo 終了時刻: %end_date% %end_time%
REM 時間の計算と表示(経過時間)
call :GetTimeDifference %start_time% %end_time%
echo 経過時間: %time_diff%
endlocal
exit /b
:GetTimeDifference
setlocal
set "start_time=%~1"
set "end_time=%~2"
REM 開始時刻の時・分・秒を抽出
for /f "tokens=1-3 delims=:." %%a in ("%start_time%") do (
set "start_hour=%%a"
set "start_minute=%%b"
set "start_second=%%c"
)
REM 終了時刻の時・分・秒を抽出
for /f "tokens=1-3 delims=:." %%a in ("%end_time%") do (
set "end_hour=%%a"
set "end_minute=%%b"
set "end_second=%%c"
)
REM 時間の差を計算
set /a "hour_diff=end_hour-start_hour"
set /a "minute_diff=end_minute-start_minute"
set /a "second_diff=end_second-start_second"
REM 時間の調整(マイナス値や60秒以上の場合)
if %second_diff% lss 0 (
set /a "second_diff+=60"
set /a "minute_diff-=1"
)
if %minute_diff% lss 0 (
set /a "minute_diff+=60"
set /a "hour_diff-=1"
)
REM 経過時間を設定
set "time_diff=%hour_diff%時間 %minute_diff%分 %second_diff%秒"
endlocal & set "time_diff=%time_diff%"
exit /b
このバッチファイルでは、開始時刻と終了時刻の差から経過時間を計算して表示する方法が示されています。必要に応じて、このコードをカスタマイズして、自分のニーズに合った結果を得ることができます。