当前位置 :
bat变量的嵌套使用,怎么用@echooffcall:dsum1209ss::时间差:dsumif%%1:0,1%==0if%%2:0,1%set/a%3=%%2:1,1%-%%1:1,1%if%%1:0,1%==0ifnot%%2:0,1%set/a%3=%2-%%1:1,1%ifnot%%1:0,1%==0if%%2:0,1%set/a%3=%%2:1,1%-%1ifnot%%1:0,1%
 更新时间:2023-02-02 16:38:21
3人问答
问题描述:

bat变量的嵌套使用,怎么用

@echooff

call:dsum1209ss

::时间差

:dsum

if%%1:0,1%==0if%%2:0,1%set/a%3=%%2:1,1%-%%1:1,1%

if%%1:0,1%==0ifnot%%2:0,1%set/a%3=%2-%%1:1,1%

ifnot%%1:0,1%==0if%%2:0,1%set/a%3=%%2:1,1%-%1

ifnot%%1:0,1%==0ifnot%%2:0,1%set/a%3=%2-%1

echo%ss%

goto:eof

pause

如上,我是想计算时间差来着,在网上找了好几个计算时间差的代码,都用不了.打算自己写,思路是把时间分成时分秒,做差,但由于类似set/as=09-07这样的二进制在bat中是错误的,所以写上边的复杂代码,好分辨是否是两位数,以便于做差.变量的嵌套使用不会.如上,我想实现的是将参数1209ss传到子程序.但失败了.请高手指教.

或者能求出任意两点时间差的批处理,最好参数1是时间1,参数2是时间2,参数三是时间差也可以.

宋丽茹回答:
  我不直接回答你这问题,有个技巧可以较简捷去前置零,比如把当前时间化成秒set/a"t=(%time:~,2%)*3600+(1%time:~3,2%-100)*60+1%time:~6,2%-100"对于嵌套,有两形式,一是在setlocalenabledelayedexpansion状态(即之...
罗忠亮回答:
  还有一点,假如时间是早上7:03:02.99,那岂不是在%time:~,2%时出错了?另外再请教一点:set加引号,是为什么?
宋丽茹回答:
  %time%如果小时数为一位数时前面加的是空格,而set/a会忽略前置空格由于计算符中有些是在其它命令中也是有其意义的,所以对于加引号有些是必须的,刚才我上面的其实可以不加引号的,我是习惯加引号,请参见set/?其实对不加/a的set命令也类似加引号也是有好处的:1如有特殊符不加转义符2可清晰看出其尾部有无空格
最新更新
查询网(393r.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

邮箱:  联系方式:

Copyright©2009-2021 查询网 393r.com 版权所有 闽ICP备2021002823号-6