帮忙看看这个批处理有没有错误
计算批处理从运行到完成所用的时间@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%秒!
为什么有时会显示找不到操作数?而大部分时候都能正常显示出运行时间。 展开
@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%秒!
为什么有时会显示找不到操作数?而大部分时候都能正常显示出运行时间。 展开
展开全部
有错误,发生在计算时刻的分或秒为08或09时,因为0开始的数被认为是8进制数,而比08小的数与十进制无区别,但08 09就非法了,另外如跨日且跨月则结果出现负数
修改建议,取分秒时可左边串个1,相当于增大了100,本来可以再减100就是正常的不带前置0的数了,因为最终要作减法,干脆减数被减数都上浮100不动就行了
对于跨日问题,如果确定上限会小于24小时,就不用考虑日期了直接被减数增大24小时减去减数后取24的余就行了比如 set/a "小时=(h2-h1+24)%%24"
写法精简建议:对set/a 表达式用到的变量,不必用一对%% 且可用逗号分隔连续赋值
修改建议,取分秒时可左边串个1,相当于增大了100,本来可以再减100就是正常的不带前置0的数了,因为最终要作减法,干脆减数被减数都上浮100不动就行了
对于跨日问题,如果确定上限会小于24小时,就不用考虑日期了直接被减数增大24小时减去减数后取24的余就行了比如 set/a "小时=(h2-h1+24)%%24"
写法精简建议:对set/a 表达式用到的变量,不必用一对%% 且可用逗号分隔连续赋值
上海国想
2024-12-02 广告
2024-12-02 广告
作为上海国想科技发展有限公司的工作人员,解决数据库勒索病毒问题,首先要立即断开数据库服务器的网络连接,防止病毒扩散。然后,迅速备份当前可用的数据,以防数据丢失。接着,使用专业的反病毒软件,如McAfee或Norton等,进行杀毒操作。此外,...
点击进入详情页
本回答由上海国想提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询