Windows 定时任务

在 Windows 上运行“定时任务”,最标准的方法是用系统自带的「任务计划程序(Task Scheduler)」。

最常见的 3 种方式如下:

  1. 图形界面:任务计划程序
    按 Win + R,输入:
taskschd.msc

然后:

  • 右侧点「创建基本任务」

  • 设置名称

  • 选择触发条件:每天、每周、登录时、开机时等

  • “操作”选择「启动程序」

  • 填入要运行的程序或脚本

  • 保存

例如每天晚上 10 点运行 Python:

程序/脚本:

C:\Users\你的用户名\AppData\Local\Programs\Python\Python313\python.exe

添加参数:

C:\code\job.py

“起始于”建议填写:

C:\code

这个“起始于”很重要。如果 Python 脚本用了相对路径,比如:

open("data.json")

没有设置工作目录时,定时任务很容易出现“手动运行正常,计划任务运行失败”的问题。

  1. 命令行:schtasks

例如每天 22:00 运行一个 Python 脚本:

schtasks /create /tn "MyPythonJob" /tr "\"C:\Python313\python.exe\" \"C:\code\job.py\"" /sc daily /st 22:00

查看:

schtasks /query /tn "MyPythonJob"

立即测试执行:

schtasks /run /tn "MyPythonJob"

删除:

schtasks /delete /tn "MyPythonJob" /f

如果你是写自动化脚本,我通常更推荐这种方式,因为可以把任务创建过程也写进 .bat / PowerShell 脚本里。

  1. PowerShell

PowerShell 对复杂任务更好控制。例如:

$action = New-ScheduledTaskAction `
    -Execute "C:\Python313\python.exe" `
    -Argument "C:\code\job.py"

$trigger = New-ScheduledTaskTrigger `
    -Daily `
    -At 10:00PM

Register-ScheduledTask `
    -TaskName "MyPythonJob" `
    -Action $action `
    -Trigger $trigger

如果你真正的需求是“Windows 每隔 N 分钟自动跑一个 Python / exe / bat”,推荐直接用 Task Scheduler,而不是在 Python 里面:

while True:
    ...
    time.sleep(...)

因为 Task Scheduler 是操作系统级调度:电脑重启后仍然存在,也更容易处理失败重试、用户未登录、管理员权限等情况。

如果你告诉我你具体想定时运行的是 .py、.bat、.exe 还是某条命令,以及类似“每天 3 点 / 每 5 分钟 / 开机后运行”,我可以直接给你对应的可复制命令。