Windows 上怎么设置 cron 定时任务?

Windows 没有 cron,等价物是任务计划程序(Task Scheduler):创建任务、设触发器、绑定操作的完整步骤;附 schtasks 命令行、PowerShell 方式与 WSL 选项、FAQ。

最佳实践
Windows 上怎么设置 cron 定时任务?封面

Windows 没有 cron,对应物是"任务计划程序"(Task Scheduler):创建任务 → 添加触发器(定时)→ 添加操作(运行什么程序/脚本)即可。 命令行场景用 schtasks,WSL 里则可以接着用真 cron。

方法一:图形界面(任务计划程序)

  1. 打开:开始菜单搜索"任务计划程序"(Task Scheduler),或运行 taskschd.msc
  2. 创建任务:右侧"操作"面板点 创建任务(比"创建基本任务"选项全)。
  3. 常规:填名称;需要最高权限或无人值守运行时,勾选"使用最高权限运行"和"不管用户是否登录都要运行"。
  4. 触发器 → 新建:选"每天/每周/每月",设开始时间与重复间隔;要做"每 5 分钟"这种高频,勾选"重复任务间隔"。
  5. 操作 → 新建:操作类型"启动程序",程序填可执行文件或解释器:
    • 跑 Python:C:\Python312\python.exe,参数填脚本路径;
    • 跑 PowerShell:powershell.exe,参数 -File C:\jobs\backup.ps1
  6. 条件/设置:按需勾掉"只有在使用交流电源时才启动"(笔记本常踩),设失败重试。

方法二:命令行 schtasks

:: 每天 02:30 运行备份脚本
schtasks /create /tn "NightlyBackup" /tr "C:\jobs\backup.bat" /sc daily /st 02:30

:: 每 10 分钟
schtasks /create /tn "Poll" /tr "C:\jobs\poll.ps1" /sc minute /mo 10

:: 查看与删除
schtasks /query /tn "NightlyBackup"
schtasks /delete /tn "NightlyBackup"

方法三:WSL 里的真 cron

装了 WSL2 的话,Linux 侧可以直接 crontab -e,语法和原生 Linux 完全一致——适合跨平台团队复用同一套调度脚本。注意 WSL 默认没人登入时不一定常驻,生产任务还是交给任务计划程序更稳。

观测云对照

Windows 服务器上的定时任务(备份、ETL、日志清理)同样需要"没跑就知道"。任务脚本输出写到统一日志目录,用 DataKit 的 Windows 版本采集到观测云,配心跳式监控器:预期时间窗口内无成功日志即告警。多台 Windows 主机的任务状态集中在一处看,比逐台开"任务计划程序"翻历史记录高效得多。

常见问题(FAQ)

Q:任务设好了但到点没运行?
A:最常见三个原因:勾选了"仅交流电源"而机器在用电池;设了"仅当用户登录时运行"但没人登录;操作的"起始于"目录没填导致脚本相对路径失效。

Q:怎么让任务以 SYSTEM 或指定账户运行?
A:创建任务时在"常规"页选"更改用户或组",输入 SYSTEM 或服务账户;配合"不管是否登录都运行"。

Q:PowerShell 脚本报"禁止运行脚本"?
A:执行策略限制。操作参数改成 -ExecutionPolicy Bypass -File C:\jobs\xxx.ps1,或用 Set-ExecutionPolicy 调整机器策略。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台