我试图获取一个.bat文件以运行提醒弹出窗口,以限制我的工作PC(Windows 7 OS)上的限制。由于这些限制,我无法使用Windows Task Scheduler,因此我需要时间检查才能在批处理文件本身中运行。
当前,我有以下内容:
@echo off
:check
if "%time%"=="09:51:00.00"
msg user42 Test Reminder
Timeout /t 20 /nobreak
GOTO :Check
问题似乎出在第三行的“ if”上。其余的代码都可以删除此行。
任何建议将不胜感激。
答案 0 :(得分:0)
我们需要对您的时间变量进行操作以使其按预期方式工作,但我们实际上并不想修改系统或用户环境变量。因此,我们创建了自己的。
首先,通过用0
替换空格,确保时间小时值始终具有2位数字,因为只有一位数字时间(1,2,3..9)将有前导空格。然后我们删除:
使其成为一个可匹配的数字值,然后简单地进行匹配以查看时间是否大于或等于0951(上午09: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
答案 1 :(得分:0)
我认为以下内容更简单和简短:
@echo off & setlocal EnableDelayedExpansion
:check
if "!time:~0,5!"==" 9:12" msg user42 Test Reminder
Timeout /t 20 /nobreak & GOTO :Check