帮忙看看这个批处理有没有错误

计算批处理从运行到完成所用的时间@echooffsetsday=%date:~8,2%for/f"tokens=1,2,3delims=.:"%%iin("%time%"... 计算批处理从运行到完成所用的时间
@echo off
set sday=%date:~8,2%
for /f "tokens=1,2,3 delims=.:" %%i in ("%time%") do set shour=%%i & set smin=%%j & set ssec=%%k

rem 中间是要执行的命令

set eday=%date:~8,2%
for /f "tokens=1,2,3 delims=.:" %%i in ("%time%") do set ehour=%%i & set emin=%%j & set esec=%%k
set/a totaltime=(%eday%-%sday%)*86400+(%ehour%-%shour%)*3600+(%emin%-%smin%)*60+(%esec%-%ssec%)
set/a hour=%totaltime%/3600
set/a min=(%totaltime%-%hour%*3600)/60
set/a sec=%totaltime%-%hour%*3600-%min%*60
echo 用时%hour%小时%min%分%sec%秒!
为什么有时会显示找不到操作数?而大部分时候都能正常显示出运行时间。
展开
 我来答
yyykkkyyyy
2014-03-01 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3300万
展开全部
有错误,发生在计算时刻的分或秒为08或09时,因为0开始的数被认为是8进制数,而比08小的数与十进制无区别,但08 09就非法了,另外如跨日且跨月则结果出现负数
修改建议,取分秒时可左边串个1,相当于增大了100,本来可以再减100就是正常的不带前置0的数了,因为最终要作减法,干脆减数被减数都上浮100不动就行了
对于跨日问题,如果确定上限会小于24小时,就不用考虑日期了直接被减数增大24小时减去减数后取24的余就行了比如 set/a "小时=(h2-h1+24)%%24"
写法精简建议:对set/a 表达式用到的变量,不必用一对%% 且可用逗号分隔连续赋值
上海国想
2024-12-02 广告
作为上海国想科技发展有限公司的工作人员,解决数据库勒索病毒问题,首先要立即断开数据库服务器的网络连接,防止病毒扩散。然后,迅速备份当前可用的数据,以防数据丢失。接着,使用专业的反病毒软件,如McAfee或Norton等,进行杀毒操作。此外,... 点击进入详情页
本回答由上海国想提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式