一个报警程序
@echo Off
:alarm
start music.mp3
cls
goto alarm如何获取/解析系统时间,使其每15分钟或每1小时开始报警?一个完整的代码将不胜感激。
发布于 2010-08-19 00:10:23
您可以使用此命令获取当前分钟数:
%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标志,以便在下一小时,闹钟可以再次启动。
不过,这是相当笨重的,因为批处理文件将不断地被磨掉。
发布于 2010-08-19 00:18:46
下面的代码将获取一个时间戳,并将其转换为自午夜以来的分钟数。
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%)为了完成你想要做的事情,你可以使用上面的代码来获取一个"start“时间戳。将所需的分钟数添加到结果(set /a endtime=(%starttime% + %interval%))。现在,创建一个将获取当前时间的循环,使用上面的代码将其转换为分钟数,然后将其与%endtime%进行比较。如果两者匹配,则已经过所需的分钟数。
请注意,如果时间间隔跨过午夜(即,如果开始时间在一天的末尾,而结束时间在另一天的开始),这将不会像预期的那样工作。
当然,解决这个问题的更简单的方法是使用像sleep这样的程序来实现这一点。您可以从Windows2003Resource Kit (details here)或GNU Coreutils for Windows包中获得。
如果你真正想要的只是一个任务调度器,那么使用内置的任务调度器(控制面板->计划任务,详细信息here或here)或命令行版本( at或schtasks命令)。
https://stackoverflow.com/questions/3514062
复制相似问题