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

 更新时间:2026年07月14日 08:51:38   作者:花花无缺  
还在为Windows定时执行Python脚本发愁,本文手把手教你用任务计划程序实现每半小时在整点和半点自动运行,涵盖PowerShell命令和图形界面两种创建方式,解决后台无输出、路径问题等常见坑,让你的脚本准时跑起来

需求:在 Windows 上从0:00开始每半小时执行一次 Python 脚本,固定落在整点(:00)和半点(:30)。 测试脚本:hello.py

一、环境信息

项目内容
操作系统Windows 11
Python 解释器3.11
脚本目录D:\Python_xx\test
测试脚本D:\Python_xx\test\hello.py

二、创建测试脚本

1. 创建脚本文件

脚本路径:D:\Python_xx\test\hello.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_xx\xx\hello.log", "a", encoding="utf-8") as f:
        f.write(line + "\n")

log("hello word!")

2. 手动验证脚本可执行

& "D:\Python\Python311\python.exe" "D:\Python_xx\xx\hello.py"

预期输出:

[2026-07-13 16:21:27] hello word!

三、创建定时任务

Windows 任务计划程序的"每 30 分钟"是从触发时刻起算的间隔,无法直接落在整点和半点。 因此采用两条任务:/sc hourly /st 00:00(整点)和 /sc hourly /st 00:30(半点)。

1. 创建整点任务

方法1:powershell创建

schtasks /create `
  /tn "PyHello_Hour" `
  /tr "D:\Python\Python311\python.exe D:\Python_xx\xx\hello.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:\Python\Python311\python.exe D:\Python_xx\xx\hello.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_xx\xx\hello.log", "a", encoding="utf-8") as f:
    f.write(f"{datetime.datetime.now()} hello word!\n")

之后查看日志即可确认整点/半点触发情况:

Get-Content "D:\Python_xx\xx\hello.log" -Tail 10

2. 无人值守运行

默认情况下,任务只在创建它的用户登录时才执行。若需要未登录时也运行:

  • 图形界面:打开任务计划程序(taskschd.msc)→ 找到任务 → 属性 → 勾选 "不管用户是否登录都要运行",并输入用户凭据。
  • 命令行:创建时加 /ru SYSTEM,以系统身份运行(但 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:\Python\Python311\python.exe), 不要直接写 python,以免任务计划程序找不到。

六、后续:替换为正式脚本

测试通过后,把 hello.py 换成你的正式业务脚本即可,定时任务无需改动。 若正式脚本路径不同,用 /change 修改任务的执行命令:

schtasks /change /tn "PyHello_Hour" /tr "D:\Python\Python311\python.exe D:\Python_xx\xx\real_script.py"
schtasks /change /tn "PyHello_Half" /tr "D:\Python\Python311\python.exe D:\Python_xx\xx\real_script.py"

到此这篇关于Windows下定时执行Python脚本方案详解的文章就介绍到这了,更多相关Python脚本定时执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中(负数)整除和取模运算方式

    python中(负数)整除和取模运算方式

    Python中的取模运算符是%,它与其他语言中的取余符号相同,整除运算符是//,表示向下取整,在Python中,正数的取余和取模结果相同,但负数的取余和取模结果有所不同,取余运算在计算时向0方向舍弃小数位,而取模运算向负无穷方向舍弃小数位
    2024-10-10
  • 超详细注释之OpenCV实现视频实时人脸模糊和人脸马赛克

    超详细注释之OpenCV实现视频实时人脸模糊和人脸马赛克

    这篇文章主要介绍了OpenCV实现视频实时人脸模糊和人脸马赛克,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • python 3.5下xadmin的使用及修复源码bug

    python 3.5下xadmin的使用及修复源码bug

    xadmin是基于Python和Django的管理框架,想要能够熟练使用,学习Django是必须的。下面这篇文章主要给大家介绍了python 3.5下xadmin的使用和当我们重写了Django的User表后,Django就会出现bug问题的解决方法,需要的朋友可以参考下。
    2017-05-05
  • pycharm如何使用服务器跑代码

    pycharm如何使用服务器跑代码

    描述了如何配置SFTP服务器和SSH解释器,并配置本地代码项目文件地址对应到服务器上的位置,实现代码的实时上传
    2026-02-02
  • python2和python3哪个使用率高

    python2和python3哪个使用率高

    在本篇文章里小编给大家分享的是一篇关于python2和python3哪个使用率高的相关知识点,需要的朋友们学习参考下。
    2020-06-06
  • 解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享

    解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享

    问题描述:PyQt 环境正常,可以使用 Windows 的 虚拟 DOS 正常运行,但在 Sublime Text 2 下使用 Ctrl + B 运行后,界面不显示,但查看任务管理器,有 python.exe 进程。
    2014-06-06
  • 多个应用共存的Django配置方法

    多个应用共存的Django配置方法

    今天小编就为大家分享一篇多个应用共存的Django配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • django 使用 request 获取浏览器发送的参数示例代码

    django 使用 request 获取浏览器发送的参数示例代码

    这篇文章主要介绍了django 使用 request 获取浏览器发送的参数示例代码,获取数据有四种方式,具体内容详情大家跟随脚本之家小编一起看看吧
    2018-06-06
  • Python requests模块实例用法

    Python requests模块实例用法

    在本篇文章中小编给大家分享了关于Python requests模块实例用法,有需要的朋友们学习参考下。
    2019-02-02
  • 基于Python编写一个批量重命名文件工具(附完整示例)

    基于Python编写一个批量重命名文件工具(附完整示例)

    这篇文章主要为大家详细介绍了如何基于Python编写一个批量重命名文件工具,文中的示例代码讲解详细,你只要一步一步跟着做就能直接运行
    2026-03-03

最新评论