批处理文件定时提醒

Batch file timed reminder

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

目前,我有:

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

问题似乎出在第三行的 "if" 上。因为其余代码在删除此行后仍然有效。

如有任何建议,我们将不胜感激。

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

首先,我们通过用 0 替换白色 space 来确保时间小时值总是有 2 位数字,因为只有一位数字时间 (1,2,3..9) 会有前导space。然后我们删除 : 使其成为一个可匹配的数值,然后我们简单地进行匹配以查看时间是否大于或等于 0951(09:51 am),如果是,我们检查它是否小于 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