首页 > 解决方案 > 批处理文件定时提醒

问题描述

我正在尝试获取一个 .bat 文件来运行提醒弹出窗口,以限制我的工作 PC(Windows 7 操作系统)。由于这些限制,我无法使用 Windows 任务调度程序,因此我需要时间检查才能在批处理文件本身内运行。

目前,我有以下内容:

@echo off
:check
if "%time%"=="09:51:00.00"
msg user42 Test Reminder
Timeout /t 20 /nobreak
GOTO :Check

问题似乎与第三行中的“如果”有关。因为其余代码在删除此行的情况下工作。

任何建议将不胜感激。

标签: batch-filetimereminders

解决方案


我们需要操纵您的时间变量以使其按预期工作,但我们真的不想修改系统或用户环境变量。所以我们创造我们自己的。

0首先,我们通过将空格替换为只有一位数的时间 (1,2,3..9) 将具有前导空格,从而确保时间小时值始终具有 2 位数字。然后我们删除:使其成为单个可匹配的数值,然后我们简单地进行匹配以查看时间是否大于或等于 0951(上午 9:51),如果是,我们检查它是否小于 0952 (09:52 am)意味着时间必须是 09:51 任何一秒,而不是 09:52 或更大。

现在我们每 50 秒运行一次脚本,这将落在每分钟内,如果我们将其留在 20 秒内,它会发出 2 或 3 次警报。

@echo off
:check
set mytime=%time: =0%
set mytime=%mytime::=%
if "%mytime:~0,4%" GEQ "0951" if "%mytime:~0,4%" LSS "0952" msg user42 Test Reminder
Timeout /t 50 /nobreak>nul
GOTO :Check

推荐阅读