这是我的方法。假设其意图仅仅是向用户显示,则秒/毫秒被省略。
@echo off & color f0
:[ Retrieve the hours and minutes from the %time% variable and turn it into variables ]
set hour=%time:~0,2%
if "%hour:~,1%"=="0" set hour=%hour:~1,2%
set minute=%time:~3,2%
:[ Being careful of leading zeros in set /a, as it indicates an octal value ]
if "%minute:~,1%"=="0" set minute=%minute:~1,2%
:[ Here is where 4 hours are added ]
set /a hour+=4
:[ Minding the run over time ]
if %minute% geq 60 set /a minute=%minute%-60 && set /a hour=%hour%+1
if %hour% geq 24 set hour=00
if %minute% lss 10 set minute=%minute%
if %hour% lss 10 set hour=0%hour:~1,1%
echo Task will run at %hour%:%minute%
:[ If desired display is relative to 12; ]
if %hour% gtr 12 set /a hour-=12
echo Alt display is %hour%:%minute%
pause
的set /a
以下:[ Here is where 4 hours are added ]
可以调整到意愿。
如果需要灵活性,当然可以使用set /a hour+=%addTime%
。
您无法对批次中的时间或日期进行计算。你可以使用'set/a'来进行(有限的)计算。基本上,您需要将时间戳转换为纯整数(秒数),添加循环时间并将生成的整数转换回时间戳。 – Stephan