克服批处理脚本中的午夜障碍

时间:2015-03-06 21:54:28

标签: performance batch-file time timer batch-processing

我一直在使用一个相当简单的时间脚本来跟踪软件的运行时间测量,并使用时钟时间测量来确保它们大致同步。但是,我意识到如果时钟超过午夜,这种方法将完全失败。

现在我正在这样做:

set start=!time!
[Code to measure goes here]
set end=!time!

for /F "tokens=1-4 delims=:.," %%a in ("!start!") do (
        set /a "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
    )
for /F "tokens=1-4 delims=:.," %%a in ("!end!") do (
        set /a "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
    )

set /A elapsed=end-start
echo Elapsed Time: !elapsed!

有没有人知道我可以用来解决这个问题的任何巧妙的小技巧?

1 个答案:

答案 0 :(得分:2)

 if %elapsed% lss 0 set /a elapsed +=8640000

其中8640000是24小时内百分之秒的数字。

当然,如果你使用12小时制(你不会说),你需要使用不同的常数 - 关键时间变为凌晨1点