中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-05 13:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]长时间进行相同计算出错 查看 721 回复 1
楼 主 [讨论]长时间进行相同计算出错 发表于 2007-01-20 08:36 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
我早上写了这个批处理,后来发现执行时间过长后会出错,出错代码为

SET /A S=(((%TIME:~7,1%-S9)*2+1)%%2*(%TIME:~7,1%-S9)*10)/(((%TIME:~7,1%-S9)*2+1)%%2*(%TIME:~7,1%-S9)*10-1)

出错时的两个变量分别为
%time:~7,1%=9
%s9%=9
出错时的结果为-1,正常结果为0
出错时间最长为48分钟,最短只有8分钟就有


完整代码:

@ECHO OFF
SET TIMEON=%TIME:~0,-3%
:TIME1
SET /A S9=%TIME:~7,1%,S1+=S
SET /A H=S1/3600,M=S1%%3600/60,S=S1%%3600%%60
ECHO stopwatch %H%:%M%:%S% current:%TIME:~0,-3% timeon:%TIMEON% secs=%S1% %S9%
SET /A S1/(S1-100000) 2>nul||GOTO NEXT
:TIME0
SET /A S=(((%TIME:~7,1%-S9)*2+1)%%2*(%TIME:~7,1%-S9)*10)/(((%TIME:~7,1%-S9)*2+1)%%2*(%TIME:~7,1%-S9)*10-1)
GOTO TIME%S%
2 发表于 2007-09-15 20:12 ·  中国 北京 中国科学院研究生院玉泉四公寓
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
那就分开写
不要偷懒啊

或者
换一个算法
论坛跳转: