---
# System prepended metadata

title: cmd 処理時間を表示 2021-06-19
tags: [処理時間, cmd]

---

---
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` `処理時間`
