如何在Windows每次登录(含锁屏PIN解锁)后执行批处理脚本
如何在Windows每次登录(含锁屏PIN解锁)后执行批处理脚本
嘿,这个需求我刚好折腾过,完全能用Windows自带的工具搞定,不用装任何第三方软件,完美匹配你的要求!下面分两步来实现:
第一步:写你的休息提醒批处理脚本
先创建一个批处理文件(比如命名为BreakReminder.bat),把下面的代码粘进去,它会帮你实现「登录后重置60分钟计时器、到点提醒、没锁屏就5分钟后重复提醒」的逻辑:
@echo off :: 配置参数:休息倒计时60分钟,未休息重试间隔5分钟 set "rest_timer=60" set "retry_gap=5" :start_countdown :: 用ping模拟稳定延迟(比timeout靠谱,不会被用户按键打断) ping -n %rest_timer% 127.0.0.1 > nul :: 弹出休息提醒(用系统自带的msg命令,直接弹到当前用户桌面) msg %username% "⏰ 休息时间到!已经坐了%rest_timer%分钟,快站起来活动一下吧!" :check_lock_status :: 等5分钟再检查 ping -n %retry_gap% 127.0.0.1 > nul :: 检查当前用户会话是否活跃(没锁屏就是Active状态) query session %username% | findstr /i "Active" > nul if %errorlevel% == 0 ( :: 用户还没锁屏,再次弹出提醒 msg %username% "⚠️ 还没休息吗?再不动动腰要僵啦!" goto check_lock_status ) else ( :: 用户锁屏了,等解锁后任务会重新启动,直接退出当前脚本 exit /b )
脚本小说明:
- 用
ping做延迟是因为timeout命令会被用户按任意键提前终止,ping更稳定; query session用来检测用户是否锁屏——如果会话状态不是Active,说明用户已经锁屏,脚本就退出,等解锁后重新触发;- 你可以根据自己的需求修改
rest_timer和retry_gap的数值,比如把60改成45,5改成3之类的。
第二步:用任务计划程序设置触发规则
Windows的任务计划程序可以精准触发「每次用户登录(包括锁屏解锁)」的场景,步骤如下:
- 按下
Win+R,输入taskschd.msc回车,打开任务计划程序; - 点击右侧的「创建任务」,给任务起个好记的名字,比如「休息提醒脚本」;
- 切换到「触发器」标签,点击「新建」:
- 「开始任务」选择用户登录时,这个触发条件会覆盖「开机登录」和「锁屏解锁登录」两种场景;
- 如果你想让所有用户都生效,就勾选「针对所有用户」,否则只留当前用户即可;
- 切换到「操作」标签,点击「新建」:
- 「操作」选择启动程序,「程序或脚本」选择你刚才创建的
BreakReminder.bat文件路径;
- 「操作」选择启动程序,「程序或脚本」选择你刚才创建的
- 切换到「设置」标签,勾选这两个选项:
- 「如果任务已经在运行,不要启动新实例」——避免解锁时重复启动多个脚本;
- 「允许任务按需运行」——确保锁屏解锁时能及时触发;
- 最后点击「确定」,如果弹出权限验证,输入管理员密码确认就行。
这样设置好之后,不管是开机首次登录,还是锁屏后用PIN解锁,脚本都会自动启动,重置你的休息计时器。如果到点你没锁屏,它还会每隔5分钟催你一次,完全符合你的需求!
备注:内容来源于stack exchange,提问作者Dan




