商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Windows下定时执行Python脚本方案详解

Windows下定时执行Python脚本方案详解

  发布于2026-07-15 阅读(0)

扫一扫,手机访问

如果需要在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,右侧操作栏点击 "创建任务..."

Windows下定时执行Python脚本方案详解

"常规" 选项卡:

名称:PyHello_Hour, 其他默认即可,

Windows下定时执行Python脚本方案详解

点"触发器" 标签:

1.开始任务:选 按计划

2.设置:选 每天

3.开始时间:0:00:00(对应 /st 00:00)

4.高级设置" 区域:

  • 勾选 "重复任务间隔",右边下拉选 1 小时
  • 持续时间:选 无限期(对应命令行的每小时持续运行)

Windows下定时执行Python脚本方案详解

"操作" 选项卡 → 点 "新建..."

操作:选 启动程序

程序或脚本: - 添加参数(可选):- 点 "确定"

Windows下定时执行Python脚本方案详解

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

Windows下定时执行Python脚本方案详解

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"

Windows下定时执行Python脚本方案详解

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"
本文转载于:https://www.jb51.net/python/3673592yo.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注