- ·上一篇文章:将BAT转换为JS运行的批处理程序
- ·下一篇文章:用批处理单行显示多种颜色字符
- ·百度中搜索更多的关于“Timediff函数 显示两个时间点的差值”相关内容
- ·谷歌中搜索更多的关于“Timediff函数 显示两个时间点的差值”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
Timediff函数 显示两个时间点的差值
这个小函数主要是为测试自己所写的代码的执行时间而写,大家可以调用它测试自己的代码是否高效,执行时间是否足够的短,
由于系统环境变量提供的time精确到0.01秒,所有这个函数也最大程度第精确到0.01秒
它可以显示1天内(可以不是当天)任意两个时间点%time%之间的差值。
@echo off||显示两个时间点的差(精确到0.01秒),很实用的代码
:loop
set TA=%time% & echo %time%A
title 按任意键继续&pause>nul
set TB=%time% & echo %time%B
call:Timediff %TA% %TB% 0
title 按任意键继续...&pause>nul
goto:loop
:: /* Timediff -
:Timediff [%t1%] [%t2%] [par|0]
for %%a in (+%1 +%2 +%3)do if "%%a"=="+" echo 参数缺失!&exit/b
setlocal enabledelayedexpansion
:timediff_1
set P2=%~1&set "P2=!P2::=!"
set/a P2=%P2:.=%-4000*(%P2:~,4%+60*%P2:~,2%)
if not "%3"=="" set P1=!P2!&shift&goto:timediff_1
if !P2! geq !P1! (set/a df=!P2!-!P1!) else set/a df=!P2!-!P1!+8640000
set/a h=df/360000,m=df%%360000/6000,s=df%%6000/100,pt=df%%100
if %pt% leq 9 set pt=0%pt%
endlocal&if %2.==0. (echo\%h%:%m%:%s%.%pt%) else set %2=%h%:%m%:%s%.%pt%&goto:eof
:: - Timediff - */
也可以这样调用:
@echo off ||显示两个时间点的差(精确到0.01秒),很实用的代码
:loop
set TA=%time% & echo %time%A
title 按任意键继续&pause>nul
set TB=%time% & echo %time%B
call:Timediff %TA% %TB% Tab
for /f "tokens=1-3 delims=:" %%a in ("%TAB%")do echo 时间差:%%a小时%%b分钟%%c秒
pause
goto:loop
:: /* Timediff -
:Timediff [%t1%] [%t2%] [par|0]
for %%a in (+%1 +%2 +%3)do if "%%a"=="+" echo 参数缺失!&exit/b
setlocal enabledelayedexpansion
:timediff_1
set P2=%~1&set "P2=!P2::=!"
set/a P2=%P2:.=%-4000*(%P2:~,4%+60*%P2:~,2%)
if not "%3"=="" set P1=!P2!&shift&goto:timediff_1
if !P2! geq !P1! (set/a df=!P2!-!P1!) else set/a df=!P2!-!P1!+8640000
set/a h=df/360000,m=df%%360000/6000,s=df%%6000/100,pt=df%%100
if %pt% leq 9 set pt=0%pt%
endlocal&if %2.==0. (echo\%h%:%m%:%s%.%pt%) else set %2=%h%:%m%:%s%.%pt%&goto:eof
:: - Timediff - */
(严重推荐)
还可以这样调用:先将这个代码保存为Timediff.bat放到%path%路径下(我一般直接copy到system32目录里)
:: /* Timediff -
:Timediff [%t1%] [%t2%] [par|0]
for %%a in (+%1 +%2 +%3)do if "%%a"=="+" echo 参数缺失!&exit/b
setlocal enabledelayedexpansion
:timediff_1
set P2=%~1&set "P2=!P2::=!"
set/a P2=%P2:.=%-4000*(%P2:~,4%+60*%P2:~,2%)
if not "%3"=="" set P1=!P2!&shift&goto:timediff_1
if !P2! geq !P1! (set/a df=!P2!-!P1!) else set/a df=!P2!-!P1!+8640000
set/a h=df/360000,m=df%%360000/6000,s=df%%6000/100,pt=df%%100
if %pt% leq 9 set pt=0%pt%
endlocal&if %2.==0. (echo\%h%:%m%:%s%.%pt%) else set %2=%h%:%m%:%s%.%pt%&goto:eof
:: - Timediff - */
然后直接在代码里这样用:
@echo off||显示两个时间点的差(精确到0.01秒),很实用的代码
:loop
set TA=%time%
title 按任意键继续&pause>nul
call timediff %TA% %time% 0
goto:loop

