我正在陷入两难境地。 我想发出一个先发制人的电子邮件给用户,告诉他们即将到来的任务是即将发生。 为了做到这一点,我定义一些变量,通过BLAT发送电子邮件,睡在批次5分钟,然后执行脚本的其余部分。
当执行%time%
在下午4:00,我得到16:00:00.00。 如果我5分钟内加入到它,只有在用下面的代码的电子邮件显示目的:
@echo on
SET /a timeminute = 00 + 5 << --- test code
::SET /a timeminute = %time:~3,2% + 5 << --- actual code in GoLive
IF %timeminute% LEQ 9 (
GOTO :resetTime
) ELSE (
GOTO :end
)
:resetTime
SET timeminute = "0%timeminute%"
:end
echo %timeminute%
pause
我得到5,而不是像05预期。 上一次使用算术下降前导零,所以我尝试后重新添加它,但后来SET是IF语句中,不能看到? 我怎么能看到? 有没有在批处理环境变量一个这样的东西?
请记住这个问题仅一小时的前9分钟之内发生,在此时间之后,有没有更多的前导零。
奖励:当在一个小时内分钟数是55-59,会发生什么? 在我的例子,这将是60-64岁,所以我需要围捕一个小时的路,走剩余分钟的护理。 现在,我认为这是一个错误,但我不预见这个脚本在那些奇怪的时间运行。 但是,如果它是一个简单的办法,请让我知道,因为我还没有尝试过,甚至解决这一问题。
非常感谢你
更紧凑的形式做同样的事情是这样的:
@echo on
for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
set timeHour=%%a
set timeMinute=%%b
set timeSeconds=%%c
)
rem Convert HH:MM to minutes + 5
set /A newTime=timeHour*60 + timeMinute + 5
rem Convert new time back to HH:MM
set /A timeHour=newTime/60, timeMinute=newTime%%60
rem Adjust new hour and minute
if %timeHour% gtr 23 set timeHour=0
if %timeHour% lss 10 set timeHour=0%timeHour%
if %timeMinute% lss 10 set timeMinute=0%timeMinute%
echo %timeHour%:%timeMinute%:%timeSeconds%
pause
回答我自己有以下问题:
@echo on
setlocal enabledelayedexpansion
set timehour=%time:~0,2%
set timeminute=%time:~3,2%
set timeseconds=%time:~6,2%
set addTime=5
IF %timeminute:~0,1% lss 1 set timeminute=!timeminute:~1,1!
IF %timeminute:~0,1% lss 1 set timeminute=!timeminute:~1,1!
set /a timeminute=%timeminute% + %addTime%
IF %timeminute% lss 10 set timeminute=0!timeminute!
IF %timeminute% equ 60 (
set timeminute=00
set /a timehour=%timehour% + 1
)
IF %timeminute% equ 61 (
set timeminute=01
set /a timehour=%timehour% + 1
)
IF %timeminute% equ 62 (
set timeminute=02
set /a timehour=%timehour% + 1
)
IF %timeminute% equ 63 (
set timeminute=03
set /a timehour=%timehour% + 1
)
IF %timeminute% equ 64 (
set timeminute=04
set /a timehour=%timehour% + 1
)
IF %timehour% equ 25 (
set timehour=00
)
IF %timehour% lss 10 set timehour=0!timehour!
echo %timehour%:%timeminute%:%timeseconds%
pause