该方案用Windows任务计划程序+PowerShell脚本自动判断工作日,通过读取holidays.json中的节假日和补班数据,结合星期几判定当天是否需响闹钟,并配置依赖顺序的任务链实现全自动提醒。

你每天早上8点要打卡,但遇到调休或法定节假日就该静音——系统自带闹钟做不到自动识别,手动关太麻烦,一忘就是迟到。现在教你用Windows任务计划程序+轻量脚本,让电脑自己判断今天是不是该响。
准备节假日判定数据
先下载一份最新中国法定节假日日历JSON文件,保存为holidays.json,放在C:\alarm\目录下。这个文件必须包含每年的放假安排、调休上班日,否则后续脚本无法识别补班日。
打开记事本,粘贴以下内容并另存为C:\alarm\is_workday.ps1(注意扩展名是.ps1):
```powershell
$today = Get-Date -Format "yyyy-MM-dd"
$holidays = Get-Content "C:\alarm\holidays.json" | ConvertFrom-Json
$workdays = $holidays.workdays
$holidaysList = $holidays.holidays
if ($workdays -contains $today) { exit 0 }
if ($holidaysList -contains $today) { exit 1 }
$weekday = (Get-Date).DayOfWeek.Value__
if ($weekday -in 1..5) { exit 0 } else { exit 1 }
```
创建自动判断任务
第一步:按 Win+R 输入 taskschd.msc → 回车打开任务计划程序。
第二步:右侧点击“创建基本任务”,名称填“工作日闹钟判定”,描述可空,点“下一步”。
第三步:触发器选“每天”,起始时间设为 00:01,这样每天凌晨刚过就执行一次判断,确保当天状态已更新。
第四步:操作选“启动程序”,程序填 powershell.exe,参数填:
-ExecutionPolicy Bypass -File "C:\alarm\is_workday.ps1"
第五步:勾选“不管用户是否登录都要运行”+“不存储密码”,点“完成”。这一步没做会导致凌晨无人登录时任务失败,闹钟彻底失灵。
配置主闹钟任务
方法一:系统闹钟 + 手动开关(适合临时应急)
打开“闹钟和时钟”应用 → 点击“+”添加闹钟 → 设好时间(如07:30)→ 关闭“重复”选项 → 保存。每天早上自己看日历决定是否手动开启。
方法二:全自动弹窗提醒(推荐)
再建一个任务,名称叫“工作日弹窗提醒”,触发器设为每天07:30;操作选“启动程序”,程序填 msg.exe,参数填:
* "⏰ 该起床了!今天是工作日。" → 勾选“仅当计算机处于空闲状态时才运行”避免干扰办公。
方法三:播放本地音效(需提前准备)
把alarm.wav放进C:\alarm\,新建任务触发时间07:30,操作选“启动程序”,程序填 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,参数填:
-c "(New-Object Media.SoundPlayer 'C:\alarm\alarm.wav').PlaySync()"
【关键前提】前两个任务必须全部启用,且“工作日闹钟判定”任务必须在“工作日弹窗提醒”之前运行,否则弹窗可能出现在节假日。

















