中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: [求助] 时间计算的方法! 上一主题 | 下一主题
geffhv
社区乞丐





积分 -51
发帖 8
注册 2007-12-17
来自 四川省南充市嘉陵区
状态 离线
『楼 主』:  [求助] 时间计算的方法!

我想做一个四则运算的批处理
      主要用来做加时间的
      像 14:48到 22:48 = 8个小时
      怎么实现
      求助!
      计时的好了吧
      和跑表一样的功能

[ Last edited by geffhv on 2008-3-1 at 10:34 PM ]

2008-2-29 16:03
查看资料  发送邮件  发短消息 网志  OICQ (373414158)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 2 楼』:  

没怎么明白
说详细些

2008-2-29 16:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  


@echo off
>test.vbs echo aDate="13:20:00"
>>test.vbs echo bDate="22:20:00"
>>test.vbs echo Wscript.echo DateDiff("h", aDate, bDate)
for /f "delims=" %%i in ('cscript.exe //nologo test.vbs') do set N=%%i&del test.vbs
echo 计算结果%N%个小时
pause




第一高手    第二高手

2008-2-29 16:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 4 楼』:  

呵呵,向你学习vbs了!

这个帖子和下面的帖子很类似呀.也同样是我和fastslz跟帖.
批处理怎样计算时间


http://www.cn-dos.net/forum/view ... 1&highlight=###

2008-2-29 17:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 5 楼』:  

纯批也可以,
但没作00:点的判断处理。
@echo off
cls
set kai=14:18
set jies=22:18
call :lis %kai% km
call :lis %jies% jm
set /a ca=jm-km,max=216000
for %%a in (s f m) do (
  set /a max/=60,%%a=^(ca-^(ca%%max^)^)/max,ca=ca%%max
)
echo\&echo  %kai% 到 %jies% = %s% 小时 %f% 分 %m% 秒
echo\&pause&exit
:lis
for /f "tokens=1-3 delims=:" %%a in ("%~1%") do (
   set /a s=100%%a%%100*3600,f=100%%b%%100*60,m=100%%c%%100
)
set /a %2=s+f+m
goto :eof




致精致简!
2008-3-1 00:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
nanhui112
初级用户





积分 127
发帖 59
注册 2007-11-13
状态 离线
『第 6 楼』:  代码就不写啦 ^_^

1:确定时间格式 a=Tt:Mm:Ss  a1=tt:mm:ss  24小时制
2: 提取a小时位,分钟位,秒数位 %a:~0,2% %a:~3,2% %a:~6,2%
    提取a1小时位,分钟位,秒数位 %a1:~0,2% %a1:~3,2% %a1:~6,2%
3: 对a 判断T,M,S 位判断是否为0  
    %a:~0,1%  %a:~3,1% %a:~6,1% 如果为0 用set %a:~0,2%=%a:~1,1% 依此类推 同理a1 也要判断。
4: 计算差
   set/a   tt-Tt  mm-Mm  ss-Ss 并对最后结果用if判断是否小于0 ,如果是0 时间位加上24  分数位加上60  秒数位加上60,再对每次结果是否小于(lss)10 进行判断 如果是 用set 进行补0   如 用t代表tt-Tt的结果 if %t% lss 10  (set t=0t) 依此类推分数,秒数位。
5: 输出结果 echo 格式  t:m:s
--------------仅支持24小时以内,一起加油。晕 --  加24 或 60  时 要记得高位减一计算 !!!

[ Last edited by nanhui112 on 2008-3-7 at 08:55 PM ]

2008-3-7 20:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 7 楼』:  

去掉原来的 替换一个现在的
@echo off
set aDate=01:35:18
set bDate=21:09:08
for /f "tokens=1-3 delims=:" %%i in ("%aDate%") do (
set/a h1=1%%i-100,h2=1%%j-100,h3=1%%k-100
)
for /f "tokens=1-3 delims=:" %%i in ("%bDate%") do (
set/a n1=1%%i-100,n2=1%%j-100,n3=1%%k-100
)
if %n3% geq %h3% (set/a n3-=h3) else set/a n3=60+n3-h3,h2+=1
if %n2% geq %h2% (set/a n2-=h2) else set/a n2=60+n2-h2,h1+=1
if %n1% geq %h1% (set/a n1-=h1) else set/a n1=24+n1-h1
echo\&echo  %aDate% 到 %bDate% = %n1% 小时 %n2% 分 %n3% 秒
echo\&pause&exit
这个计算运行时间,精确到最后两位
@echo off
set aDate=%time: =%
echo 按任意键,显示从开始运行到按键的时间
pause
set bDate=%time: =%
for /f "tokens=1-4 delims=:." %%i in ("%aDate%") do set/a h1=1%%i-100,h2=1%%j-100,h3=1%%k-100,h4=1%%l-100
for /f "tokens=1-4 delims=:." %%i in ("%bDate%") do set/a n1=1%%i-100,n2=1%%j-100,n3=1%%k-100,n4=1%%l-100
if %n4% geq %h4% (set/a n4-=h4) else set/a n4=100+n4-h4,h3+=1
if %n3% geq %h3% (set/a n3-=h3) else set/a n3=60+n3-h3,h2+=1
if %n2% geq %h2% (set/a n2-=h2) else set/a n2=60+n2-h2,h1+=1
if %n1% geq %h1% (set/a n1-=h1) else set/a n1=24+n1-h1
echo\&echo  %aDate% 到 %bDate% = %n1% 小时 %n2% 分 %n3% 秒 %n4%
echo\&pause&exit
[ Last edited by terse on 2008-4-10 at 12:51 PM ]



简单!简单!再简单!
2008-3-7 20:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
geffhv
社区乞丐





积分 -51
发帖 8
注册 2007-12-17
来自 四川省南充市嘉陵区
状态 离线
『第 8 楼』:  

谢谢大家
但没我要的

2008-3-9 21:03
查看资料  发送邮件  发短消息 网志  OICQ (373414158)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 9 楼』:  

只为学习--------你要何?
我当一回雷锋



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-3-10 00:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
woo88
初级用户





积分 188
发帖 96
注册 2008-3-11
状态 离线
『第 10 楼』:  

一样

2008-3-11 17:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
klyx
新手上路





积分 16
发帖 8
注册 2007-12-28
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by terse at 2008-3-7 08:51 PM:
我来一个
写错一字符 改
@echo off
set Date1=01:35:18
set Date2=21:58:55
for /f "tokens=1-3 delims=:" %%i in ("%Date1%") do (
     set h1=%%i
     set h2=%%j
   ...

当set Date2=21:09:08
出错了
01:35:18 到 21:09:08 = 19 小时 24 分 42 秒
01:35:18 到 21:07:07 = 19 小时 31 分 49 秒

2008-4-9 21:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by klyx at 2008-4-9 21:42:



当set Date2=21:09:08
出错了
01:35:18 到 21:09:08 = 19 小时 24 分 42 秒
01:35:18 到 21:07:07 = 19 小时 31 分 49 秒

可能是0开头的问题



简单!简单!再简单!
2008-4-9 22:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
klyx
新手上路





积分 16
发帖 8
注册 2007-12-28
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by terse at 2008-4-9 10:47 PM:

可能是0开头的问题

是个位8,9问题

2008-4-10 11:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by klyx at 2008-4-10 11:09:

是个位8,9问题

说的对,更确切的说应该是在十位是0时 个位大于7就会出错,



简单!简单!再简单!
2008-4-10 12:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
klyx
新手上路





积分 16
发帖 8
注册 2007-12-28
状态 离线
『第 15 楼』:  

怎样读取time.txt最后一行时间
time.txt:

2008-04-10 星期四
12:42:15  
2008-04-10 星期四
12:42:16  
2008-04-10 星期四
12:42:17  
2008-04-10 星期四
12:42:18  
2008-04-10 星期四
12:42:19

2008-4-10 14:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: