早教吧作业答案频道 -->其他-->
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变量的嵌套使用,怎么用...的网友还看了以下:
● 执行下面的一段C程序后,变量x的值为 (41) 。 char x = 200; int a = 2020-05-26 …
(3)与if(x=0)等价的语句是:()A.if(0)B.if(x==0)C.if(x=1)D.i 2020-06-03 …
heaskedherifshehadenjoyedthespeech.请问if在这里属于什么语法点 2020-06-18 …
if(0==a)和if(a==0)条件语句if(0==a)和if(a==0)有什么区别么?还是仅仅 2020-06-20 …
在CXCEL里IF函数用法=IF(A2="","",SUMIF(B$2:B2,B2,C$2)-SU 2020-07-09 …
if(0)if(1)各代表什么意思inta=0if(1)a=3;if(0)a=4;elsea=5; 2020-07-09 …
bat变量的嵌套使用,怎么用@echooffcall:dsum1209ss::时间差:dsumif 2020-07-23 …
农夫过河问题(一个小细节)农夫过河问题判断农夫和被移动物体是否在同侧的语句是if((0!=(loc 2020-07-30 …
1、有理数x.y,且|3x+2|+(2y-3)²=0求-x²-y²的值.(汉语翻译:有理数x,y, 2020-07-30 …
对了,问下,什么时候用==,什么时候用=,不是说==表示逻辑判断,=表示赋值吗?我这个for(n=0 2020-12-31 …