cmd 批次檔 bat 如何計時程式跑多少時間
想要計算批處理到底跑了多久時間,可以參考下面範例
寫好的 function 可以直接 call 來用
寫好的 function 可以直接 call 來用
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: 取得參數指令
SET INSTR=
FOR %%I IN (%*) DO (
SET "INSTR=!INSTR!%%I "
)
call :TimerStart
:: 開始執行程式
::%INSTR%
timeout /t 1
call :TimerEnd
call :TimerStart
始執行程式
::%INSTR%
timeout /t 2
call :TimerEnd
exit
Rem <================================================
:TimerStart
Rem -------------------------------------------------
rem 取得開始時間
SET A=%TIME%
goto :eof
Rem -------------------------------------------------
Rem <================================================
:TimerEnd
Rem -------------------------------------------------
rem 取得結束時間
SET B=%TIME%
rem 取得時間詳細資料
SET A_HOUR=%A:~0,2%
SET A_MINS=%A:~3,2%
SET A_SECS=%A:~6,2%
SET A_MSEC=%A:~9,2%
SET B_HOUR=%B:~0,2%
SET B_MINS=%B:~3,2%
SET B_SECS=%B:~6,2%
SET B_MSEC=%B:~9,2%
rem FOR debug
rem echo.
rem echo START TIME:%A%
rem echo END TIME:%B%
rem echo %A_HOUR%:%A_MINS%:%A_SECS%.%A_MSEC%
rem echo %B_HOUR%:%B_MINS%:%B_SECS%.%B_MSEC%
rem 計算耗時
SET /A C_MSEC=B_MSEC-A_MSEC
SET /A C_SECS=B_SECS-A_SECS
SET /A C_MINS=B_MINS-A_MINS
SET /A C_HOUR=B_HOUR-A_HOUR
rem 調整數值
IF %C_MSEC% LSS 0 SET /A C_MSEC+=100 & SET /A C_SECS-=1
IF %C_MSEC% LSS 10 SET C_MSEC=0%C_MSEC%
IF %C_SECS% LSS 0 SET /A C_SECS+=60 & SET /A C_MINS-=1
IF %C_SECS% LSS 10 SET C_SECS=0%C_SECS%
IF %C_MINS% LSS 0 SET /A C_MINS+=60 & SET /A C_HOUR-=1
IF %C_MINS% LSS 10 SET C_MINS=0%C_MINS%
IF %C_HOUR% LSS 0 SET /A C_HOUR+=24
IF %C_HOUR% LSS 10 SET C_HOUR=0%C_HOUR%
echo TimeIs: %C_HOUR%:%C_MINS%:%C_SECS%.%C_MSEC%
ENDLOCAL
goto :eof
Rem -------------------------------------------------
沒有留言:
張貼留言