作者tropical72 (蓝影)
站内Programming
标题Re: [问题][batch]如何计算一个程式执行的时间?
时间Wed Sep 21 02:56:05 2011
※ 引述《antirazin (~ SNSD & KARA ~ )》之铭言:
: 上网找了很多但都没有好的解法
: 所以想请教板友都是怎麽计时的?
: 希望执行起来像下面这样:(假设bat档名为mtime)
: C:>mtime dir C: /s
: Execution time: 00:05:03:45
: 之类的
: 麻烦各位了,谢谢~
网路怪怪的,internet 一直上不去,没办法 po code,下面参考一下
----
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: 取得参数指令
SET "INSTR="
FOR %%I IN (%*) DO (
SET "INSTR=!INSTR!%%I "
)
:: 取得开始时间
SET A=%TIME%
:: 开始执行程式
%INSTR%
:: 取得结束时间
SET B=%TIME%
:: 取得时间详细资料
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%
:: FOR debug
echo.
echo START TIME:%A%
echo END TIME:%B%
:: echo %A_HOUR%:%A_MINS%:%A_SECS%.%A_MSEC%
:: echo %B_HOUR%:%B_MINS%:%B_SECS%.%B_MSEC%
:: 计算耗时
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
:: 调整数值
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 ELAPSE :%C_HOUR%:%C_MINS%:%C_SECS%.%C_MSEC%
ENDLOCAL
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.177.78.41
1F:→ tropical72:补一下,耗时精度确实有待商议. 180.177.78.41 09/21 02:58
2F:→ priv:如果只需要取到秒的话倒是无所谓.. 140.113.23.102 09/21 10:13
取到秒是真的无所谓,只是没研究算出来的 .xx 效果如何。
※ 编辑: tropical72 来自: 180.177.78.41 (09/21 11:46)
3F:推 vencin1987:另外写AP去执行console程式应该较好 114.42.245.27 09/25 03:15
4F:→ tropical72:耶..这是额外的 bat 没错,拿来测其它 180.177.78.41 09/25 03:38
5F:→ tropical72:console 下执行的结果. 180.177.78.41 09/25 03:38
6F:→ tropical72:若要额外包成.exe,差别只在计时器吧 ? 180.177.78.41 09/25 03:39
7F:→ MOONRAKER:要考虑console程式呼叫shell的时间。 61.228.240.149 09/25 20:05
8F:→ MOONRAKER:不过现在不是问题,以前DOS 3时期偶尔会 61.228.240.149 09/25 20:06
9F:→ MOONRAKER:很慢。 61.228.240.149 09/25 20:06
10F:→ tropical72:谢谢M大,请教,依原po之要求,呼叫之时间 180.177.78.41 09/25 21:00
11F:→ tropical72:应属无可避免吧?或,不同程式语言,在呼 180.177.78.41 09/25 21:00
12F:→ tropical72:叫时所占用时间亦不同? 180.177.78.41 09/25 21:01
13F:→ MOONRAKER:我也不知道,不过以前因为有注意到这点 59.120.49.163 09/27 12:58
14F:→ MOONRAKER:我认为用batch计算会比较准,当然那是 59.120.49.163 09/27 12:58
15F:→ MOONRAKER:很久以前了 59.120.49.163 09/27 12:59
16F:→ tropical72:谢谢 M 大经验上的分享 *^_^* 180.177.78.41 09/27 18:48