You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现每月任务调度报错求助:类型不匹配问题排查

问题解决:Windows任务调度每月触发器类型不匹配错误

错误原因

你遇到的pywintypes.com_error: (-2147352571, 'Type mismatch.', None, 1)错误,核心原因是:

  • 针对每月触发器(TASK_TRIGGER_MONTHLY),DaysOfWeek和WeeksOfMonth属性不接受Python原生列表,必须传入位掩码整数;
  • 未指定正确的每月触发器子类型,导致调度器无法识别触发规则逻辑。

修正步骤

  1. 指定每月触发器子类型:设置trigger.MonthlyTriggerType = 1,对应TASK_TRIGGER_MONTHLY_DOW(按星期几+周数触发的每月规则)。
  2. 转换星期数为位掩码:
    Windows任务调度中星期几的位掩码对应关系:
    • 周日=1,周一=2,周二=4,周三=8,周四=16,周五=32,周六=64
      你需要的周二、周三、周四对应的位掩码总和为 4 + 8 + 16 = 28。
  3. 转换周数为位掩码:
    每月周数的位掩码对应关系:
    • 第1周=1,第2周=2,第3周=4,第4周=8,第5周=16
      你需要的第1-4周对应的位掩码总和为 1 + 2 + 4 + 8 = 15。

修正后的代码片段

替换原代码中设置触发器属性的部分:

trigger.StartBoundary = set_time.isoformat()
trigger.Enabled = True

# 新增:指定每月触发器为按周+星期几的类型
trigger.MonthlyTriggerType = 1
# 用位掩码代替列表
trigger.DaysOfWeek = 28  # Tuesday(4) + Wednesday(8) + Thursday(16)
trigger.WeeksOfMonth = 15  # 第1-4周
trigger.Months = 4095  # 1-12月的位掩码总和,等价于1+2+4+...+2048

补充说明

  • Months属性用位掩码4095可以直接覆盖1-12月,比逐个写月份列表更简洁;
  • 若需按特定日期(而非星期)触发每月任务,需将MonthlyTriggerType设为2(TASK_TRIGGER_MONTHLY_DATE),并设置DaysOfMonth属性(同样支持位掩码)。

内容的提问来源于stack exchange,提问作者somesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:20:27