我想在批处理文件中进行持续时间计算,并且模数计算存在问题。网站上的示例总是显示一位数的计算,例如14 %% 3 - > 2.总是拒绝使用60或3600进行模数计算。所以我首先尝试了一个除法和一个modullo %% 1的答案变量。但这也被否定了。有人知道如何处理这样的情况吗?
以下是代码片段:
set endzeit=Ende: %date% %time:~-11,2%:%time:~-8,2%:%time:~-5,2%
set /a ende=(%time:~-11,2%)*3600 + (%time:~-8,2%)*60 + (%time:~-5,2%)
set /a dauer=%ende%-%anfang%
set /a dauer_r=(%dauer%/3600)%%1
set /a dauer_sek=(%dauer_std_r%/60)%%1
set /a dauer_min=(%dauer_std_r%-%dauer_sek%)/60
set /a dauer_std=(%dauer%-%dauer_r%)/3600
echo %dauer_std%:%dauer_min%:%dauer_sek%
答案 0 :(得分:0)
您的时间计算有点复杂,最好从小时开始
set /a
并不需要变量位于%
(有效,但更难以阅读)
添加了正确处理分钟/秒08
和09
的代码(通过在开头添加1
并减去100)
setlocal
set anfang=20000
set endzeit=Ende: %date% %time:~-11,2%:%time:~-8,2%:%time:~-5,2%
set /a ende=(%time:~-11,2%)*3600 + (1%time:~-8,2% - 100)*60 + (1%time:~-5,2% - 100)
set /a dauer=ende - anfang
set /a dauer_std=dauer / 3600
set /a dauer_min=(dauer - dauer_std*3600) / 60
set /a dauer_sek=dauer - dauer_std*3600 - dauer_min*60
REM shortcut: set /a dauer_sek=dauer %%60
echo %dauer_std%:%dauer_min%:%dauer_sek%
(注意:您可能已经知道,当时间跨越午夜时,您会得到错误的结果)
答案 1 :(得分:0)
这是一个利用PowerShell进行持续时间计算的示例。
@Echo Off
Echo Gestartet
Set "anfang=%DATE% %TIME%"
Echo Warten
Timeout 28 /NoBreak>Nul
Echo Fertig
Set "endzeit=%DATE% %TIME%"
Echo Berechnen
For /F "Delims=" %%A In ('PowerShell -C^
"([DateTime]'%endzeit%'-[DateTime]'%anfang%').ToString()"') Do Echo %%~nA
Pause
替换行4
&使用您实际需要的命令5
您可能需要将%TIME%
更改为%TIME:,=.%
才能使其与德语Windows一起使用。