[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [已解决]批处理如何计算时间差?

  1. set a=%time%
  2. copy sesvc.txt C:\windows
  3. set b=%time%
复制代码
请问如何计算 %b% 和 %a% 这两个时间的差值?

[ 本帖最后由 michael8111 于 2011-2-22 21:04 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

批处理计算时间差获取代码运行时间
http://bbs.bathome.net/thread-4701-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

用FOR /F把%TIME%当作字符串处理,之后用SET /A计算
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 3楼 的帖子

没这么简单吧,你不考虑一下天、小时、分钟、秒之间的换算么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4楼 的帖子

呵呵。我是针对于LZ的%TIME%做的回答。for /f下不是有DELIMS=:.
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 5楼 的帖子

如果文件很大,需要复制1个多小时,你能直接计算出差值?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

%date%和%time%要求为标准格式
  1. @echo off&setlocal enabledelayedexpansion
  2. call:k
  3. ping 127.1 -n 2 >nul
  4. call:k
  5. set/a D=D2-D1,K=K2-K1
  6. if %K% leq 0 set/a K+=8640000,D-=1
  7. if %D% leq 0 (echo %K%0毫秒)else echo %D%天%K%0毫秒
  8. pause&exit
  9. :k
  10. set E=%date%&set T=%time%&set K=%time:~0,2%&set/a N+=1
  11. set/a D%N%=1%E:~8,2%%%100,M=1%E:~5,2%%%100-1,Y=%E:~0,4%,"K%N%=%K: =%*360000+(1%T:~3,2%-100)*6000+(1%T:~6,2%-100)*100+1%T:~9,2%-100"
  12. for /l %%a in (1,1,%M%) do set/a "K=^!(%%a-4)|^!(%%a-6)|^!(%%a-9)|^!(%%a-11)","D%N%+=^!(%%a-2)*(28+^!((^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)))+K*30+(^!^!(%%a-2)&^!K)*31"
  13. set/a D%N%+=(Y-1)*365+Y/4-Y/100+Y/400
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 7楼 的帖子

这个代码运行之后为什么总是出现:
  1. 1060毫秒
  2. 请按任意键继续...
复制代码

这个1060毫秒是什么的时间差?

[ 本帖最后由 michael8111 于 2011-2-22 20:52 编辑 ]

TOP

回复 8楼 的帖子

把 7楼 中的 ping 127.1 -n 2 >nul 替换为你需要执行的代码,显示的就是执行这个命令所需要的时间
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 5楼 的帖子

这个文件复制过去40多秒左右。关键是用delims=:怎么把关键的时间部分(如20:02:21.54中的02:21)提取出来并把“:”换成“.”?

TOP

回复 9楼 的帖子

虽然有点不准……但还是正确有效的。谢谢!

TOP

回复 11楼 的帖子

具体哪里不准?让他再去修改一下代码?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. set CURRENT_DATE=%date:~0,10%  
  4. set CURRENT_TIME=%time:~0,8%  
  5. set MSG=%CURRENT_DATE% %CURRENT_TIME% 执行开始  
  6. set H1=%CURRENT_TIME:~0,2%  
  7. set /a H1=%H1:0=%+0  
  8. set M1=%CURRENT_TIME:~3,2%  
  9. set /a M1=%M1:0=%+0  
  10. set S1=%CURRENT_TIME:~6,2%  
  11. set /a S1=%S1:0=%+0  
  12. echo %MSG%  
  13. echo %MSG% >> 程序执行时间.log  
  14.   
  15. ::程序的执行命令  
  16. ::================================================  
  17. ping 127.0.0.1 >nul  
  18. ::================================================  
  19.   
  20. set CURRENT_DATE=%date:~0,10%  
  21. set CURRENT_TIME=%time:~0,8%  
  22. set MSG=%CURRENT_DATE% %CURRENT_TIME% 执行结束  
  23. set H2=%CURRENT_TIME:~0,2%  
  24. set /a H2=%H2:0=%+0  
  25. set M2=%CURRENT_TIME:~3,2%  
  26. set /a M2=%M2:0=%+0  
  27. set S2=%CURRENT_TIME:~6,2%  
  28. set /a S2=%S2:0=%+0  
  29. echo %MSG%  
  30. echo %MSG% >> 程序执行时间.log  
  31.   
  32. set /a TIME_SECOND1=%H1%*3600+%M1%*60+%S1%  
  33. set /a TIME_SECOND2=%H2%*3600+%M2%*60+%S2%  
  34. set /a TIME_DIFF=%TIME_SECOND2%-%TIME_SECOND1%  
  35. set /a H_DIFF=%TIME_DIFF%/3600  
  36. set /a M_DIFF=(%TIME_DIFF%-%H_DIFF%*3600)/60  
  37. set /a S_DIFF=%TIME_DIFF%%%60  
  38.   
  39. if %H_DIFF% LSS 10 set H_DIFF=0%H_DIFF%  
  40. if %M_DIFF% LSS 10 set M_DIFF=0%M_DIFF%  
  41. if %S_DIFF% LSS 10 set S_DIFF=0%S_DIFF%  
  42. echo 执行时间:%H_DIFF%:%M_DIFF%:%S_DIFF%  
  43. echo 执行时间:%H_DIFF%:%M_DIFF%:%S_DIFF% >> 程序执行时间.log  
  44. pause
复制代码

TOP

  1. @echo off
  2. set n=11
  3. set t1=%time:~,-3%
  4. echo 命令写在这里
  5. ping 127.0.0.1 >nul
  6. set t2=%time:~,-3%
  7. for /f "tokens=1-6 delims=:" %%i in ("%t1%:%t2%") do (
  8. set/a s1=%%i*3600+%%j*60+%%k
  9. set/a s2=%%l*3600+%%m*60+%%n
  10. )
  11. set/a t=%s2%-%s1%
  12. echo 程序运行%t%秒
  13. pause
复制代码

TOP

返回列表