Windows下定时执行Python脚本方案详解
Windows 11 是微软全新操作系统,现代化界面,流畅操作体验,适用于学习、工作与日常生活。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
在Windows上实现从0:00起每半小时(整点和半点)执行Python脚本,需创建两个定时任务,分别设置开始时间为00:00和00:30,使用schtasks命令或任务计划程序。通过日志验证执行,支持无人值守运行,注意使用绝对路径调用解释器。
如果需要在Windows上从0:00开始,每半小时执行一次Python脚本,并且要求固定在整点(:00)和半点(:30)触发,那该怎么做?任务计划程序里自带的“每30分钟”选项,其实是从触发那一刻起算间隔,根本没法直接固定到整点和半点上。所以,这里需要一点小技巧——用两条任务来分别覆盖整点和半点。
先说几个关键点:
一、环境信息
| 项目 | 内容 |
|---|---|
| 操作系统 | Windows 11 |
| Python 解释器 | 3.11 |
| 脚本目录 | D:Python_xxtest |
| 测试脚本 | D:Python_xxtesthello.py |
二、创建测试脚本
1. 创建脚本文件
脚本路径:D:Python_xxtesthello.py
import datetime
def log(msg):
"""同时输出到控制台和日志文件,每行带时间戳"""
line = f"[{datetime.datetime.now():%Y-%m-%d %H:%M:%S}] {msg}"
print(line)
with open(r"D:Python_xxxxhello.log", "a", encoding="utf-8") as f:
f.write(line + "n")
log("hello word!")
2. 手动验证脚本可执行
& "D:PythonPython311python.exe" "D:Python_xxxxhello.py"
预期输出:
[2026-07-13 16:21:27] hello word!
三、创建定时任务
为什么需要两条任务?因为任务计划程序里的“每30分钟”选项,其实是从触发那一刻起算间隔,根本没法直接固定到整点和半点上。所以,得用两个任务:一个在整点触发,一个在半点触发。对应到命令行参数,就是 /sc hourly /st 00:00(整点)和 /sc hourly /st 00:30(半点)。
1. 创建整点任务
方法1:命令行创建(PowerShell中运行)
schtasks /create ` /tn "PyHello_Hour" ` /tr "D:PythonPython311python.exe D:Python_xxxxhello.py" ` /sc hourly ` /st 00:00 ` /f
方法2:Windows自带的图形化界面任务计划程序
按 Win + R,输入 taskschd.msc,右侧操作栏点击 "创建任务..."

"常规" 选项卡:
名称:PyHello_Hour, 其他默认即可,

点"触发器" 标签:
1.开始任务:选 按计划
2.设置:选 每天
3.开始时间:0:00:00(对应 /st 00:00)
4.高级设置" 区域:
- 勾选 "重复任务间隔",右边下拉选 1 小时
- 持续时间:选 无限期(对应命令行的每小时持续运行)

"操作" 选项卡 → 点 "新建..."
操作:选 启动程序
程序或脚本: - 添加参数(可选):- 点 "确定"

"条件""设置" 选项卡,默认即可,点最下方 "确定" 完成创建。 创建后,在左侧 "任务计划程序库" 里找到 PyHello_Hour,右键 → "运行" 可立即测试 hello.py 是否正常执行

2. 创建半点任务(同上)
schtasks /create ` /tn "PyHello_Half" ` /tr "D:PythonPython311python.exe D:Python_xxxxhello.py" ` /sc hourly ` /st 00:30 ` /f
参数说明
/tn任务名称(Task Name)/tr要执行的程序或命令(Task Run)/sc调度频率(Schedule),hourly表示每小时/st开始时间(Start Time),决定落在 :00 还是 :30/f强制覆盖同名任务(Force)
四、验证与管理
1. 查看任务状态
schtasks /query /tn "PyHello_Hour" schtasks /query /tn "PyHello_Half"

2. 立即手动触发一次(测试用)
schtasks /run /tn "PyHello_Hour" schtasks /run /tn "PyHello_Half"
3. 删除任务
schtasks /delete /tn "PyHello_Hour" /f schtasks /delete /tn "PyHello_Half" /f
五、重要说明
1. 后台运行无控制台输出
任务计划程序在后台执行时,print() 输出的内容会一闪而过,根本来不及看。想确认任务是否真的在整点或半点执行了,最简单的方法就是看日志:
import datetime
with open(r"D:Python_xxxxhello.log", "a", encoding="utf-8") as f:
f.write(f"{datetime.datetime.now()} hello word!n")
之后用 Get-Content "D:Python_xxxxhello.log" -Tail 10 查看日志末尾,就能清楚看到每次触发的时间戳。
2. 无人值守运行
默认情况下,任务只在创建它的用户登录时才会执行。如果希望电脑未登录时也能运行:
- 图形界面:打开任务计划程序(
taskschd.msc)→ 找到任务 → 属性 → 勾选 "不管用户是否登录都要运行",并输入用户凭据。 - 命令行:创建时加
/ru SYSTEM,以系统身份运行。不过要注意,这样运行时脚本无法访问网络映射盘等用户会话资源。
schtasks /create /tn "PyHello_Hour" /tr "..." /sc hourly /st 00:00 /ru SYSTEM /f
3. 相对路径问题
任务计划程序的工作目录不一定是脚本所在目录。如果脚本里需要读写同目录下的文件,建议在脚本开头先切换工作目录:
import os os.chdir(os.path.dirname(os.path.abspath(__file__)))
4. Python 解释器路径
务必使用绝对路径调用解释器(D:PythonPython311python.exe),不要直接写 python,否则任务计划程序可能找不到。
六、后续:替换为正式脚本
测试通过后,把 hello.py 换成你的正式业务脚本即可,定时任务本身不需要改动。如果正式脚本路径变了,用 /change 修改任务的执行命令:
schtasks /change /tn "PyHello_Hour" /tr "D:PythonPython311python.exe D:Python_xxxxreal_script.py" schtasks /change /tn "PyHello_Half" /tr "D:PythonPython311python.exe D:Python_xxxxreal_script.py"
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。












