---
lang: ja-jp
breaks: true
---
# cmd 処理時間を表示 2021-06-19
```shell=
@echo off
:Main
call :GetStartTime
rem -----------------------------------------------------
rem ここに時間がかかる処理を記述
rem -----------------------------------------------------
set RET=%ERRORLEVEL%
call :GetEndTime
call :PutTime
if %RET% gtr 0 (
echo エラー発生!!
pause
) else (
TIMEOUT /T 5
)
exit
:GetStartTime
rem 開始時刻の取得
set T=%TIME: =0%
set H=%T:~0,2%
set M=%T:~3,2%
set S=%T:~6,2%
set C=%T:~9,2%
rem 先頭が0の数値が8進数として扱われないようにするための処理
set /a H=1%H%-100,M=1%M%-100,S=1%S%-100,C=1%C%-100
exit /b 0
:GetEndTime
rem 終了時刻の取得
set T1=%TIME: =0%
set H1=%T1:~0,2%
set M1=%T1:~3,2%
set S1=%T1:~6,2%
set C1=%T1:~9,2%
rem 先頭が0の数値が8進数として扱われないようにするための処理
set /a H1=1%H1%-100,M1=1%M1%-100,S1=1%S1%-100,C1=1%C1%-100
rem 処理時間の計算
set /a H2=H1-H,M2=M1-M
if %M2% LSS 0 set /a H2=H2-1,M2=M2+60
set /a S2=S1-S
if %S2% LSS 0 set /a M2=M2-1,S2=S2+60
set /a C2=C1-C
if %C2% LSS 0 set /a S2=S2-1,C2=C2+100
if %C2% LSS 10 set C2=0%C2%
exit /b 0
:PutTime
rem 開始・終了時刻と処理時間の表示
rem Hが時、Mが分、Sが秒、Cがコンマ以下2桁秒
rem 処理時間表示は適宜必要な単位のみ残して削除可
echo.
rem echo 開始時刻:%T%
rem echo 終了時刻:%T1%
echo 処理時間:%H2%h %M2%m %S2%.%C2%s
exit /b 0
```
###### tags: `cmd` `処理時間`