首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将系统时间解析为程序的输入

如何将系统时间解析为程序的输入
EN

Stack Overflow用户
提问于 2010-08-18 23:59:09
回答 2查看 1.6K关注 0票数 1

一个报警程序

代码语言:javascript
复制
@echo Off
:alarm
start music.mp3

cls
goto alarm

如何获取/解析系统时间,使其每15分钟或每1小时开始报警?一个完整的代码将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-19 00:10:23

您可以使用此命令获取当前分钟数:

代码语言:javascript
复制
%Time:~3,2%

然后,您应该能够构建IF语句,如下所示:

代码语言:javascript
复制
IF %Time:~3,2%==00 START music.mp3

唯一的缺点是,这将在整个00分钟的持续时间内持续发射。

你可以这样做:

代码语言:javascript
复制
@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标志,以便在下一小时,闹钟可以再次启动。

不过,这是相当笨重的,因为批处理文件将不断地被磨掉。

票数 2
EN

Stack Overflow用户

发布于 2010-08-19 00:18:46

下面的代码将获取一个时间戳,并将其转换为自午夜以来的分钟数。

代码语言:javascript
复制
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包中获得。

如果你真正想要的只是一个任务调度器,那么使用内置的任务调度器(控制面板->计划任务,详细信息herehere)或命令行版本( atschtasks命令)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3514062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档