我正在尝试创建一个1行代码,它将所有变量加起来很难在文本中解释,但这里只是代码的一小部分
H = hours
M = Minutes
Thr = Total Hours
Tmin= Total Minutes
Call data.bat
Rem data.bat is all the h1,m1,h2,m2,h3,m3... info
Rem Example Data
H1=3
M1=53
H2=4
M2=20
Set num=1
:refresh
if %H%num%% GTR 0 set /a Thr=%H%num%%+%Thr%
if %M%num%% GTR 0 set /a Thr=%M%num%%+%TMin%
if %M%num%% EQU 0 Goto :total
set /a number=%number%+1
goto :refresh
:Total
set /a Total=((%Thr%*60)+%Tmin%)
set /a TotalHour=(%Total%/60)
set /a TotalMin=(-%TotalHour%*60)+%Total%
if %Totalmin% GEQ 0 if %Totalmin% LEQ 9 set Totalmin=0%Totalmin%
Echo Duration : %TotalHour%hr %TotalMin%min
如果总计为0,则小时数没有,因为有时可能有0小时但是##的分钟 关于如何做到这一点的任何想法? 按原样运行它给我
一步一步的操作
if %h%num%% gtr 0 set /a Thr=%h%num%%+%thr%
If %h1% gtr 0 set /a thr=%h1%+%thr%
If 3 gtr 0 set /a thr=**3+%thr%
if 3 gtr 0 set /a thr=3+1
答案 0 :(得分:2)
您的代码中有几点需要调整:
if !H%num%! GTR 0 set /a Thr=!H%num%!+%Thr%
set /a
命令可以在仅给出变量名称时直接访问数组元素,因此在这种情况下不需要扩展值:
set /a Thr=H%num%+Thr
set /a number=number+1
最后一行也可以这样写:
set /a number+=1
if defined
命令:
if defined H%num% goto refresh
number
而不是num
,以及分钟计算中的Thr
。
这是完成之前修改后的最终代码:
@echo off
REM H = hours
REM M = Minutes
REM Thr = Total Hours
REM Tmin= Total Minutes
REM Call data.bat
Rem data.bat is all the h1,m1,h2,m2,h3,m3... info
Rem Example Data
set H1=3
set M1=53
set H2=4
set M2=20
Set num=1
:refresh
set /a Thr=H%num%+Thr
set /a Tmin=M%num%+Tmin
set /a num=num+1
if defined M%num% Goto :refresh
:Total
set /a Total=((Thr*60)+Tmin)
set /a TotalHour=(Total/60)
set /a TotalMin=(-TotalHour*60)+Total
if %Totalmin% LEQ 9 set Totalmin=0%Totalmin%
Echo Duration : %TotalHour%hr %TotalMin%min
输出:
Duration : 8hr 13min
答案 1 :(得分:0)
如果您正在寻找解析时间和计算持续时间的公式,您可能会看到:Calculate Time difference in Windows batch file