用批处理测试一个程序的运行时间

如题,我是参加noip竞赛的,要求程序运行时间不超过1s,想测试一下比如d.exe运行的时间,精确到毫秒,或者告诉我如何获取当前系统时间,并写入time.txt文件中,同样精确到毫秒,急!!!在线等

帮你写了一段代码,先看说明:
1。运行这个批处理后,开始检测d.exe是否运行,这时不会记录时间,因为这时记录就错了。并继续检测目标程序是否运行。
2。当你运行d.exe后,检测到d.exe已经运行,这时记录当前时间到-开始时间.txt,并继续检测目标程序是否退出,如果目标程序仍在运行就暂不记录,循环检测中。
3。当检测到d.exe退出后,马上记录当前时间到-结束时间.txt,并跳到最后,输入出结果。
4。我测试过了,打开附件里的一个程序几秒后,再把它关掉,检测结果很准。要测试,请把代码中的d.exe全部改成你要测试的程序的全名如(QQ.exe)。
5。由于你说检测时间很短,所以没有为循环检测设置延时了,如果检测长时间运行的程序,还是要适当的给循环加点延时,不然对电脑不好。
============================代码开始============================
@echo off
SetLocal EnableDelayedExpansion
:strat
tasklist /nh|find /i "d.exe"
if ERRORLEVEL 1 (goto 1) else (goto 2)
:1
cls&echo 扫描中。。。d.exe未运行。。
goto strat
:2
echo d.exe已经运行&echo %time%>开始时间.txt&goto 22
:22
tasklist /nh|find /i "d.exe"
if ERRORLEVEL 1 (goto 11) else (goto 22&cls&echo 扫描中。。。d.exe正在运行中)
:11
echo %time%>结束时间.txt
cls
for /f %%i in (开始时间.txt) do (echo D.EXE开始时间%%i)
for /f %%h in (结束时间.txt) do (echo D.EXE结束时间%%h)
pause
============================代码结束===========================
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-03
我答过一个提问求程序运行平均值的,但没那高的精度,其实程序每次运行时间也不等的,如果象楼上说的要检测进程来测,那就更不精确了,只能从批处理启动要测的程序退出自动返回才可能准一点,附上用检测20次ping用时的代码,如果可行,把那ping的那行换成start /wait 你的程序:
@echo off&setlocal enabledelayedexpansion
set nu=20
echo/&echo 测试中。。。
for /L %%i in (1,1,%nu%)do (
title . 第 %%i 次
set tb=!time!
ping -n 1 -w 800 9 >nul
set te=!time!
call :cout cb !tb!
call :cout ce !te!
set/a "c=(6000+ce-cb)%%6000"
set c%%i=!c!
set cc=!c!
set cc=!c:~,-2!.!c:~-2!
if !c! lss 10 set cc=0.0!c!
if "!cc:~,1!"=="." set cc=0!cc!
set "cc=!cc! "
set t%%i=!tb! ~ !te! == !cc:~,7!s
)
(echo %date:~,10% ping延时测试:&echo/)>test.txt
for /L %%i in (1,1,%nu%)do (
echo %%i !t%%i!>>test.txt
set/a tot+=c%%i)
set/a av=(tot*10/nu+5)/10
set avs=%av:~,-2%.%av:~-2%
if !av! lss 10 set avs=0.0!av!
if "!avs:~,1!"=="." set avs=0!avs!
(echo/&echo %nu% 次平均用时: %avs% s)>>test.txt
title . OK
echo/&echo %nu% 次平均用时: %avs% s
endlocal
echo/&pause
start test.txt
goto :eof
:cout
for /f "tokens=2-4 delims=:. " %%a in ("%2")do (
set/a "%1=(1%%a-100)*6000+1%%b%%c-10000")
第2个回答  2011-10-03
echo %time%>>time.txt
将当前时间写入time.txt本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网