中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 05:54
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]如何计算例中两个时间的差?
可打印版本  987 / 8
第1楼 flybird2020 发表于 2008-07-21 17:21
初级用户 发帖 52 积分 103
[已解决]如何计算例中两个时间的差?
由于工作原因,我要收集一下各电视台播放节目的时间段及时长
在计算时长方面,很考验数学能力。。。
算着算着就晕了

我把一个用EXCEL文件存储的文件先复制到TXT文件中(有制表符),不知能否通过批处理程序,计算出以下格式的同一行内前后相隔一列的时间差(节目播放时长,以分钟为计数形式),并导出到新的TXT中(备我再次覆盖到EXCEL中)


若可以,我希望得到的数据


不知能否达成,先谢谢各位兄台了,辛苦了

[ Last edited by flybird2020 on 2008-7-22 at 10:20 AM ]
第2楼 slore 发表于 2008-07-21 19:12
铂金会员 发帖 2,478 积分 5,212
。。。excel不是能计算呢?
第3楼 HAT 发表于 2008-07-21 19:17
版主 发帖 5,017 积分 9,023
excel的函数功能很强大啊,楼主不会用?
第4楼 26933062 发表于 2008-07-21 19:19
银牌会员 发帖 879 积分 2,268
计算不难,关键是不知道你的节目名称有多长,没办法排版。
再说你一行的内容也太长了吧,记事本都自动换行了,看的我眼花缭乱。。。呵呵。。
假设你的每行都是 4 个节目。
以下只是得到结果,未作排版。



  1. @echo off
  2. echo 开始时间 名称 时长 开始时间 名称 时长 开始时间 名称 时长 开始时间 名称
  3. echo.
  4. for /l %%a in (1 2 7) do set .%%a=%%a
  5. for /f "skip=1 delims=" %%i in (a.txt) do (
  6. setlocal enabledelayedexpansion
  7. for %%a in (%%i) do (
  8. set /a n+=1&set "var="
  9. if defined .!n! (
  10. set str=%%a&set str1=!str:~0,2!&set str1=!str1::=!&set "str2=!str:*:=!"
  11. set /a str2=100!str2!%%100
  12. if !str1! equ 0 set /a str1=24
  13. set /a str=str1*60+str2
  14. if defined m (
  15. if !str! lss !m! set /a str+=1440
  16. set /a var=str-m
  17. )
  18. set "m=!str!"
  19. )
  20. set /p=%%a !var! <nul
  21. )
  22. echo.
  23. endlocal
  24. )
  25. pause
小楼一夜听春雨 2008-07-21 19:31


[ Last edited by 26933062 on 2008-7-21 at 07:42 PM ]
第5楼 bat-zw 发表于 2008-07-21 19:40
金牌会员 发帖 1,276 积分 3,105
晕,小楼兄总是领先一步:

ps:因论坛处理不了制表符,请楼主复制代码后相应的空格换成制表符," "即为制表符。

[ Last edited by zw19750516 on 2008-7-21 at 08:22 PM ]
第6楼 26933062 发表于 2008-07-21 19:43
银牌会员 发帖 879 积分 2,268
刚才未对 0:00 点及 跨天数的处理,现以在4楼更新。
第7楼 flybird2020 发表于 2008-07-22 10:20
初级用户 发帖 52 积分 103
谢谢大大们,问题已解决,辛苦啦
第8楼 yishanju 发表于 2008-07-22 14:01
银牌会员 发帖 1,357 积分 1,488
楼主也不说一下怎么解决的?
第9楼 flybird2020 发表于 2008-07-24 10:16
初级用户 发帖 52 积分 103
Originally posted by yishanju at 2008-7-22 02:01 PM:
楼主也不说一下怎么解决的?


开始我是想用EXCEL的函数去解决,后来发现手动添加函数太费神
还是用的
五楼大大 bat-zw
写的代码用的有效
不过在节目名字中出现半角状态的冒号“:”时会出现错误
正在想办法解决中。。。

感谢大家对我的帮助,昨天试图用bat-zw的代码时不知哪里出错导致我不能使用,又发了一个帖求助,实为资源浪费。。。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023