警报程序
@echo Off
:alarm
start music.mp3
cls
goto alarm
如何获取/解析系统时间,以便每隔15分钟或每1小时开始报警?完整的代码将不胜感激。
答案 0 :(得分:2)
您可以使用它来获取当前分钟数:
%Time:~3,2%
然后您应该能够构建您的IF语句,如下所示:
IF %Time:~3,2%==00 START music.mp3
唯一的缺点是它会在整个00分钟内持续开火。
你可以这样做:
@ECHO OFF
SET HasRun=0
:alarm
IF %Time:~3,2%==00 (
IF %HasRun%==0 (
SET HasRun=1
START music.mp3
PAUSE
)
)
IF %Time:~3,2%==01 (
SET HasRun=0
)
CLS
GOTO alarm
它的要点是当分钟= 00(小时的第一个)时,我们启动MP3,然后让系统知道警报已经运行。一小时后,我们重置HasRun标志,以便下一个小时,警报可以重新开始。
但是,它相当笨重,因为批处理文件将不断磨砺。答案 1 :(得分:0)
以下代码将采用时间戳并将其转换为午夜后的分钟数。
REM store current timestamp
set now=%TIME:~0,-6%
REM Break time apart into hour and minute
set hour=%now:~0,-3%
set min=%now:~-2%
REM convert hour and minute into minutes
set /a starttime=((%hour% * 60) + %min%)
要执行您要执行的操作,您可以使用上面的代码来获取“开始”时间戳。在结果中添加所需的分钟数(set /a endtime=(%starttime% + %interval%)
)。现在,创建一个获取当前时间的循环,使用上面的代码将其转换为几分钟,然后将其与%endtime%
进行比较。如果两者匹配,则所需的分钟数已经过去。
请注意,如果时间间隔超过午夜(即,如果开始时间是一天结束而结束时间是另一天的开始),则此操作将不会按预期运行。
当然,解决此问题的更简单方法是使用旨在实现此目的的sleep
之类的程序。您可以从Windows 2003资源工具包(详细信息here)或GNU Coreutils for Windows包中获取一个。
<强>更新强>
如果您真正想要的只是一个任务调度程序,那么使用Windows内置的任务计划程序(控制面板 - &gt;计划任务,详细信息here或here)或命令行版本( at
或schtasks
命令。)