Windows环境下创建定时任务执行Python脚本

一、环境
以下演示使用的环境说明
Windows 操作系统:Win10
Python 环境:Python 3.7.7

二、脚本
准备Python脚本如下:

import sys
import datetime

format_time = datetime.datetime.now()

with open(file="forpy.log",mode="a",encoding="utf-8") as lf:
    lf.write(str(format_time))
    lf.write("\n")
    lf.write(str(sys.argv))
    lf.write("\n")

三、创建定时任务
1、打开【任务计划程序】
打开任务计划程序的方式有很多,这里通过快捷搜索比较方便,在任务栏搜索“任务计划程序”,然后打开

任务计划程序
2、打开【创建任务】窗口
选择一个文件夹,右键点击“创建任务”,打开任务创建窗口。
存放任务计划的文件夹,你也可以自己创建一个

创建任务

 3、创建任务一一常规
任务名称为必填项,其他可以根据实际需要选填

创建任务--常规
4、创建任务一一触发器
在"触发器"tab界面,点击"新建",打开"新建触发器"窗口

 触发器tab页面

 新建触发器

  •  开始任务:

下拉列表中有多种开始任务的策略,选择不同的选项,下方的填写项也会有变化。我这里就选择常用的 “按预定计划”;
设置:如图所示,表示从 2023/6/16 10:00:00 开始,每天执行一次

  • 高级设置:

如图所示,表示 任务每隔5分钟执行一次,任务运行持续时间1天,时间到就停止所有运行的任务

  • 状态:

已启用,如果未勾选,则该触发器不生效。
另外,可以为任务创建多个触发器,多个触发器之间是或关系,即 满足任何一个触发器条件 都会运行任务(不是所有触发器同时满足才运行任务)

5、创建任务一一操作
在"操作"tab界面,点击"新建",打开"新建操作"窗口

操作tab界面

 使用 python 命令 创建操作

新建操作

 使用 python 解释器 的绝对路径 创建操作

新建操作

  • 程序或脚本:

方式1:直接填写 python,前提是 python 解释器 路径已配置到了 Path 环境变量;
方式2:填写 python 解释器的 绝对路径,如我的 python 的路径为D:\Chen\MySoft\Python\Python3.7.7\python.exe

  • 添加参数:

填写脚本路径及脚本需要的参数
1)如果"起始于"项未填写,则脚本路径需要绝对路径;
2)如果"起始于"项填写了,则脚本路径可以填绝对路径,也可以填相对路径(相对于"起始于"给的路径);
3)脚本如果需要参数,在脚本名称后空格,然后跟传参值即可,多个参数值之间也用空格隔开。

  • 起始于:

程序或脚本打开时的工作路径
1)如果未填写,脚本需要给出绝对路径,且脚本代码内如果有使用文件或目录的地方,也需要使用绝对路径,否则会找不到对应文件或目录;
2)如果填写了,脚本可以使用相对路径,且脚本代码内如果有使用文件或目录的地方,也可以使用相对路径;
6、创建任务一一条件
创建任务执行的条件,这里的条件与触发器是且的关系,即 触发器和条件同时满足时才会执行任务

 创建任务一一条件

这里有一点需要注意,如果你的脚本需要联网才能正常运行,需要勾选"只有在以下网络连接可用时才启动",并且选择对应的网络。

7、创建任务一一设置
设置影响任务行为的其他设置

创建任务一一设置
8、完成任务创建
设置完后,最后点击"确认",完成任务创建。

完成创建 任务创建完成后,可以查看任务配置信息,如上图所示。
如果想要修改任务,可以点击右侧的"属性",打开任务编辑窗口进行相关修改。
任务会在设定的时间去执行,在"上次运行结果"可以看到最近一次任务执行的状态,会有对应的状态码及提示信息。

四、验证定时任务
验证定时任务执行的python脚本的情况
根据上边的配置,脚本运行成功后,会生成 D:\Chen\forpy.log 文件

forpy.log 文件内容

由文件内容可以看出,第2个操作脚本未执行成功,原因如【5、创建任务一一操作】解释,未配置 “起始于”,且脚本中写日志的文件使用了相对路径。

我这里将脚本中的文件路径,改为绝对路径,再观察任务执行情况

脚本中文件路径使用绝对路径

脚本中文件使用绝对路径后,再观察任务执行情况,可以看到,两个操作对应的任务都执行成功了。

forpy日志
最后,如果想要停止定时任务,可以将任务"禁用",也可以直接删除任务

猜你喜欢

转载自blog.csdn.net/lovedingd/article/details/132086437