batch-file - 批处理文件定时提醒
问题描述
我正在尝试获取一个 .bat 文件来运行提醒弹出窗口,以限制我的工作 PC(Windows 7 操作系统)。由于这些限制,我无法使用 Windows 任务调度程序,因此我需要时间检查才能在批处理文件本身内运行。
目前,我有以下内容:
@echo off
:check
if "%time%"=="09:51:00.00"
msg user42 Test Reminder
Timeout /t 20 /nobreak
GOTO :Check
问题似乎与第三行中的“如果”有关。因为其余代码在删除此行的情况下工作。
任何建议将不胜感激。
解决方案
我们需要操纵您的时间变量以使其按预期工作,但我们真的不想修改系统或用户环境变量。所以我们创造我们自己的。
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
推荐阅读
- java - 我应该使用什么版本的 Java 来开发我的 MOJO Maven 插件?
- android - PopupWindow内的RecyclerView,单击项目后如何关闭?
- kubernetes - GRPC::Unavailable: 14:DNS 解析失败,当尝试从 ruby 客户端连接 python 服务器时都在 kubernates 上提供服务
- node.js - 关于在 node js 中使用 sinon 进行单元测试
- javascript - 如何在页面加载的每个会话中运行一次预加载器
- node.js - 找不到名称“需要” - Angular 8
- c++ - std::variant vs 指向 C++ 中异构容器基类的指针
- c# - C# 按 int 排序列表,但如果发现重复值则按另一个 int
- swift - 'PostModel.Type' 类型的值没有下标 swift
- c# - 将 Request.CreateResponse 转换为 .NetCore 3.1