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

如题,我是参加noip竞赛的,要求程序运行时间不超过1s,想测试一下比如d.exe运行的时间,精确到毫秒,或者告诉我如何获取当前系统时间,并写入time.txt文件中,同... 如题,我是参加noip竞赛的,要求程序运行时间不超过1s,想测试一下比如d.exe运行的时间,精确到毫秒,或者告诉我如何获取当前系统时间,并写入time.txt文件中,同样精确到毫秒,急!!!在线等 展开
 我来答
wenrenwulei
2011-10-03 · TA获得超过1389个赞
知道小有建树答主
回答量:635
采纳率:0%
帮助的人:313万
展开全部
帮你写了一段代码,先看说明:
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
============================代码结束===========================
万山数据
2024-11-14 广告
实时数仓处理是我们北京万山数据科技有限公司数据处理能力的核心之一。它基于先进的流处理技术,能够实时捕获、处理和分析海量数据,确保数据的时效性和准确性。通过构建高效的实时数据管道,我们能够实现数据的即时入库与查询,为业务决策提供强有力的支持。... 点击进入详情页
本回答由万山数据提供
yyykkkyyyy
2011-10-03 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3293万
展开全部
我答过一个提问求程序运行平均值的,但没那高的精度,其实程序每次运行时间也不等的,如果象楼上说的要检测进程来测,那就更不精确了,只能从批处理启动要测的程序退出自动返回才可能准一点,附上用检测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")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pentium28
2011-10-03 · TA获得超过1470个赞
知道小有建树答主
回答量:618
采纳率:0%
帮助的人:851万
展开全部
echo %time%>>time.txt
将当前时间写入time.txt
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式