发布于2026-07-15 阅读(0)
扫一扫,手机访问
如果需要在Windows上从0:00开始,每半小时执行一次Python脚本,并且要求固定在整点(:00)和半点(:30)触发,那该怎么做?任务计划程序里自带的“每30分钟”选项,其实是从触发那一刻起算间隔,根本没法直接固定到整点和半点上。所以,这里需要一点小技巧——用两条任务来分别覆盖整点和半点。
先说几个关键点:
| 项目 | 内容 |
|---|---|
| 操作系统 | Windows 11 |
| Python 解释器 | 3.11 |
| 脚本目录 | D:Python_xxtest |
| 测试脚本 | D:Python_xxtesthello.py |
脚本路径: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!")
& "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:命令行创建(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.高级设置" 区域:

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

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

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)schtasks /query /tn "PyHello_Hour" schtasks /query /tn "PyHello_Half"

schtasks /run /tn "PyHello_Hour" schtasks /run /tn "PyHello_Half"
schtasks /delete /tn "PyHello_Hour" /f schtasks /delete /tn "PyHello_Half" /f
任务计划程序在后台执行时,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 查看日志末尾,就能清楚看到每次触发的时间戳。
默认情况下,任务只在创建它的用户登录时才会执行。如果希望电脑未登录时也能运行:
taskschd.msc)→ 找到任务 → 属性 → 勾选 "不管用户是否登录都要运行",并输入用户凭据。/ru SYSTEM,以系统身份运行。不过要注意,这样运行时脚本无法访问网络映射盘等用户会话资源。schtasks /create /tn "PyHello_Hour" /tr "..." /sc hourly /st 00:00 /ru SYSTEM /f
任务计划程序的工作目录不一定是脚本所在目录。如果脚本里需要读写同目录下的文件,建议在脚本开头先切换工作目录:
import os os.chdir(os.path.dirname(os.path.abspath(__file__)))
务必使用绝对路径调用解释器(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"
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8