DOS命令BAT/CMD文件中打印耗时方法

网上其它地方流传的方法有BUG,例如分钟可能会为负数。

特改善一版,时长最大支持24小时。

参考代码:

rem 耗时计算,初始化
set testtime=%time%

set  tmpIntText=%testtime:~0,2%
if "%tmpIntText:~0,1%" == "0" ( set  tmpIntText=%tmpIntText:~1,1%) 
set /a batStartH=%tmpIntText%

set  tmpIntText=%testtime:~6,2%
if "%tmpIntText:~0,1%" == "0" ( set  tmpIntText=%tmpIntText:~1,1%) 
set /a batStartS=%tmpIntText%

set  tmpIntText=%testtime:~3,2%
if "%tmpIntText:~0,1%" == "0" ( set  tmpIntText=%tmpIntText:~1,1%)
set /a batStartM=%tmpIntText%
rem 耗时计算,初始化完成

在这里可以添加很多你想要做的事情。。。
例如消耗掉三秒:ping 192.168.1.1

rem 耗时计算,结束开始统计并打印,开始
set testtime=%time%
set  tmpIntText=%testtime:~0,2%
if "%tmpIntText:~0,1%" == "0" ( set  tmpIntText=%tmpIntText:~1,1%)
set /a batEndH=%tmpIntText%
set  tmpIntText=%testtime:~6,2%
if "%tmpIntText:~0,1%" == "0" ( set  tmpIntText=%tmpIntText:~1,1%)
set /a batEndS=%tmpIntText%

set  tmpIntText=%testtime:~3,2%
if "%tmpIntText:~0,1%" == "0" ( set  tmpIntText=%tmpIntText:~1,1%)
set /a batEndM=%tmpIntText%

set /a batdiffH_=%batEndH%-%batStartH%
set /a batdiffS_=%batEndS%-%batStartS%
set /a batdiffM_=%batEndM%-%batStartM%

if "%batdiffH_:~0,1%" == "-" ( set /a batdiffH_=24-%batStartH%+%batEndH%)
if "%batdiffM_:~0,1%" == "-" ( set /a batdiffM_=60-%batStartM%+%batEndM%
set /a batdiffH_=%batdiffH_%-1)
if "%batdiffS_:~0,1%" == "-" ( set /a batdiffS_=60-%batStartS%+%batEndS% 
	if batdiffM_==0 ( set /a batdiffH_=%batdiffH_%-1) 
	if batdiffM_ neq 0 (set /a batdiffM_=%batdiffM_%-1)
)
echo 批量制作完成,耗时: %batdiffH_%小时 %batdiffM_%分钟%batdiffS_%秒

rem 耗时计算,结束开始统计并打印,结束

本文结束。

猜你喜欢

转载自blog.csdn.net/henysugar/article/details/109718071