早教吧作业答案频道 -->其他-->
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%
题目详情
bat变量的嵌套使用,怎么用
@echo off
call:dsum 12 09 ss
::时间差
:dsum
if %%1:0,1%==0 if %%2:0,1% set /a %3=%%2:1,1%-%%1:1,1%
if %%1:0,1%==0 if not %%2:0,1% set /a %3=%2-%%1:1,1%
if not %%1:0,1%==0 if %%2:0,1% set /a %3=%%2:1,1%-%1
if not %%1:0,1%==0 if not %%2:0,1% set /a %3=%2-%1
echo %ss%
goto:eof
pause
如上,我是想计算时间差来着,在网上找了好几个计算时间差的代码,都用不了.打算自己写,思路是把时间分成时分秒,做差,但由于类似set /a s=09-07这样的二进制在bat中是错误的,所以写上边的复杂代码,好分辨是否是两位数,以便于做差.变量的嵌套使用不会.如上,我想实现的是将参数12 09 ss传到子程序.但失败了.请高手指教.
或者能求出任意两点时间差的批处理,最好参数1是时间1,参数2是时间2,参数三是时间差 也可以.
@echo off
call:dsum 12 09 ss
::时间差
:dsum
if %%1:0,1%==0 if %%2:0,1% set /a %3=%%2:1,1%-%%1:1,1%
if %%1:0,1%==0 if not %%2:0,1% set /a %3=%2-%%1:1,1%
if not %%1:0,1%==0 if %%2:0,1% set /a %3=%%2:1,1%-%1
if not %%1:0,1%==0 if not %%2:0,1% set /a %3=%2-%1
echo %ss%
goto:eof
pause
如上,我是想计算时间差来着,在网上找了好几个计算时间差的代码,都用不了.打算自己写,思路是把时间分成时分秒,做差,但由于类似set /a s=09-07这样的二进制在bat中是错误的,所以写上边的复杂代码,好分辨是否是两位数,以便于做差.变量的嵌套使用不会.如上,我想实现的是将参数12 09 ss传到子程序.但失败了.请高手指教.
或者能求出任意两点时间差的批处理,最好参数1是时间1,参数2是时间2,参数三是时间差 也可以.
▼优质解答
答案和解析
我不直接回答你这问题,有个技巧可以较简捷去前置零,比如把当前时间化成秒
set/a "t=(%time:~,2%)*3600+(1%time:~3,2%-100)*60+1%time:~6,2%-100"
对于嵌套,有两形式,一是在 setlocal enabledelayedexpansion 状态(即之前加了这句代码)
用类似:
set U=abcd
set V=2
set var=!U:~%V%,1!
则变量var的值是c
另一种是不必加那一长串状态(加了也可以用这种形式),则上例最后一句改成
call set var=%%U:~%v%,1%%
set/a "t=(%time:~,2%)*3600+(1%time:~3,2%-100)*60+1%time:~6,2%-100"
对于嵌套,有两形式,一是在 setlocal enabledelayedexpansion 状态(即之前加了这句代码)
用类似:
set U=abcd
set V=2
set var=!U:~%V%,1!
则变量var的值是c
另一种是不必加那一长串状态(加了也可以用这种形式),则上例最后一句改成
call set var=%%U:~%v%,1%%
看了 bat变量的嵌套使用,怎么用...的网友还看了以下:
1、整数1用了1个数字,整数20用了2和0两个数字,那么,从1至1000一共用个数字1.2、从1开 2020-05-13 …
用1,1/2.1/4,1/8,1/32,.1/(2的N次方)去拼凑一个1/5,系数为任意整数譬如说 2020-05-17 …
用1*1、2*2、3*3的小正方形拼成一个11*11的大正方形.证明:至少要用一块1*1的正方形. 2020-07-07 …
一只平底锅一次只可烤4片面包,1片面包要烤两面,每烤一面用1分钟,烤6片面包要用多少分钟?烤8片面 2020-07-12 …
什么情况可以这样用?“A11+A12+A13+A14等于用1,1,1,1代替D的第一行所得的行列式 2020-07-17 …
线代:行列式D=3-521110-5-13132-4-1-3为什么A11+A12+A13+A14等 2020-07-17 …
有关论文书写规范的一点疑问在论文中,是否能够使用“首先、其次、再次、最后”这样的词语表明论证层次, 2020-07-24 …
埃及同中国一样,也是世界上著名的文明古国,古代埃及人处理分数与众不同,他们一般只使用分子是一的分数 2020-07-24 …
初一一道数学找规律的题急用1.将1,-1/2,1/3,-1/4,1/5,-1/6,.按一定的规律排列 2020-11-03 …
观察下列等式①1/√2+1=√2-1/(√2+1)(√2-1)=-1+√2②1/√3+√2=√3-√ 2020-12-07 …