Python自动化办公,
1.需求分析
- 系统维护及开发人员的工作一般都会比较繁杂,领导们喜欢实时掌控项目的进度,但是领导们很多时候是不会自己主动去查看及分析项目进度数据的,干活的牛马们也没空整天日报,周报,月报,季报,年报…
- 活又有了,又该想想怎么干,需求的核心是实现自动整理数据,数据图表化后自动推送,本公司工程软件部的所有任务分配都是在工程管理系统上排定,任务的详细进度及达成数据需要自行导出分析,这个部分很不符合我们的自动化宗旨,我们就从这部分需求下手,任务执行及达成状况自动推送到相关人员,领导也可实时掌控工作任务状况.
2.实现逻辑
需求有了,我们看看具体的实施逻辑
- 首先,所有的项目开发及维护分配任务是已经有了的(会要求所有需求都登记在内部开发的工程管理系统需求处理模块),我们只需要获取所有工作任务并按要求分析整理好并图表化,此部分数据我们直接去工程管理系统数据库查表获取(推荐还是通过接口获取)
- 其次,我们解析并整理任务数据,此部分数据图表展示按自身实际需求去处理
- 再次,我们以企业微信消息推送方式推送数据信息
- 最后,我们制订任务计划,让所有的信息按要求每天推送
效果演示
- 自动企微推送(没有可以邮件推送)
- 推送的详细数据报告及图表(用html网页编写,数据按自己需求即可,此处仅做案例展示)
3.代码实现
- 一些参数信息我们用标准的JSON
{ "图表存储位置": "/Linux存放生成的图表图片目录/end_img", "win系统图表存储位置": "S:\\Windows存放生成的图表图片目录\\end_img", "html缓存位置": "Linux存放生成的html文件路径/html_cache", "win系统html缓存位置": "P:\\Windows存放生成的html文件路径\\工程管理系统缓存" }
- 首先获取我们的工程管理数据库需求数据(推荐使用接口获取)
# 获取全部需求信息数据 def _get_base_data(self): """ 获取全部需求信息数据 :return: 基础信息数据字典列表 """ _where = "" if self.sys in ["工程软件组CAM系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('Incam', 'Genesis')") elif self.sys in ["工程软件组MI系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('Inplan', '物料')") elif self.sys in ["工程数据组工程管理系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('工程管理系统')") elif self.sys in ["工程数据组LOT卡系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('LOT卡')") elif self.sys in ["工程软件部联络函"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('联络函')") elif self.sys in ["日常维护&其他"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) not in " "('Incam', 'Genesis', 'Inplan', '物料', '工程管理系统', 'LOT卡', '联络函')") _sql = f""" SELECT (SELECT DicName FROM sys_dictionarylist WHERE Dic_ID=(SELECT Dic_ID FROM sys_dictionary WHERE DicNo='Site') AND DicValue=requirement_0_main.Site) AS 基地, (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND Id=requirement_0_main.RequireSoftware) AS 需求软件, (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NOT NULL AND Id=requirement_0_main.RequireType) AS 需求类别, (SELECT DicName FROM sys_dictionarylist WHERE Dic_ID=(SELECT Dic_ID FROM sys_dictionary WHERE DicNo='RequireStatus') AND DicValue=requirement_0_main.RequireStatus) AS 需求状态, JobName AS 参考料号, Topic AS 主题, Detail AS 详细描述, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.Register) AS 登记人, RegisterDate AS 登记时间, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.RequireAudit) AS 需求审核人, RequireAuditTime AS 需求审核时间, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.DevAuditor) AS 开发审核人, DevAuditorTime AS 开发审核时间, PlannedCompletionTime AS 计划完成时间, ActualCompletionTime AS 实际完成时间, ActualCompletionTime AS 实际完成时间, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.TestPerson) AS 测试人, TestTime AS 测试时间, (SELECT DicName FROM sys_dictionarylist WHERE Dic_ID=(SELECT Dic_ID FROM sys_dictionary WHERE DicNo='TestResult') AND DicValue=requirement_0_main.TestResult) AS 测试结果, TestRemark AS 测试意见, TestBackTimes AS 退回次数 FROM requirement_0_main {_where} """ _data = self.sql.exec_query(_sql) return _data
- 整理数据生成图表(根据需求产生需要的数据及图表)
# 统计各基地需求信息 def _get_reviewed_info(self, _site): """ 统计各基地需求信息 :return: """ _dict = {} _num = 0 for i in self.data: if _site in ["湖南", "广东", "泰国&台湾", "全部"]: if i["基地"] == _site: _num += 1 if i["需求状态"] not in _dict.keys(): _dict[i["需求状态"]] = 0 _dict[i["需求状态"]] += 1 else: _num += 1 if i["需求状态"] not in _dict.keys(): _dict[i["需求状态"]] = 0 _dict[i["需求状态"]] += 1 _str = _site if _site in ["全部"]: _str = "其他" if _site not in ["湖南", "广东", "泰国&台湾", "全部"]: _str = "" # 中文标签 plt.rcParams['font.sans-serif'] = ['STKaiti'] # 指定默认字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号'-'显示为方块的问题 # 创建图像 # 组合标签和数据,并根据数据排序 data = sorted(zip(_dict.keys(), _dict.values()), key=lambda x: x[1], reverse=True) if len(data) == 0: return labels, sizes = zip(*data) labels = tuple([i.split(",")[0] + ",\n" + i.split(",")[1] if "," in i else i for i in list(labels)]) # 获取所有颜色 _colors = list(colors.TABLEAU_COLORS.values()) plt.figure(figsize=(12, 6)) # 设置图像大小为8x6 plt.bar(labels, sizes, width=0.3, color=_colors, edgecolor='black') plt.title(f'{_str}需求汇总({time.strftime("%Y-%m-%d", time.localtime())})', fontsize=16) # 添加标题 plt.xlabel(f'{_str}总需求汇总数量:{_num}', fontsize=14) # 添加x轴标签 plt.ylabel('数量', fontsize=12) # 添加y轴标签 plt.xticks(fontsize=10) # 设置x轴刻度标签字体大小 plt.yticks(fontsize=10) # 设置y轴刻度标签字体大小 # 添加数据标签 for i, v in enumerate(sizes): plt.text(i, v + 1, str(v), ha='center', fontsize=10) plt.tight_layout() # 自动调整布局 plt.savefig(f'{self.img_path}/{_str}成本管理中心需求汇总.png') self.img_list.append(f'{self.img_path}/{_str}成本管理中心需求汇总.png') # plt.show()
- 信息推送(邮件推送及企业微信推送)
# 企微推送 def _send_wechat_message(self): """ 推送信息 :return: """ img_data_list = [] for i in self.img_list: with open(i, 'rb') as f: img_data_list.append(f'<img src="data:image/png;base64,%s" alt="Embedded Image">' % base64.b64encode(f.read()).decode('utf-8')) _h = "\n".join(img_data_list) html_text = """ <html> <head> <style> .timestamp { font-size: 24px; } .container { margin: 20px; display: flex; flex-wrap: wrap; justify-content: space-between; } .container img { margin: 20px; max-width: 46%%; margin-bottom: 4%%; border-radius: 10px; object-fit: cover; object-position: center; } body { margin: 10px; background-color: #170044; color: #FFF; } </style> </head> <body> <h2 style="text-align: center;font-size: 30px;margin-left: 20px; margin-right: 20px;"> 所有基地                                    成本管理中心需求汇总(%s)                                    %s</h2> <div class="container"> %s </div> </body> </html> """ % (self.sys, time.strftime("%Y-%m-%d", time.localtime()), _h) self.html_file = f"{self.html_path}\\{self.sys}-{time.strftime('%Y-%m-%d', time.localtime())}.html" with open(self.html_file, "w") as f: f.write(html_text) _wc = WeChatMessage() _dict = _wc.get_users_id() _users_id = [list(i.values())[0] for i in _dict["工程软件部"] + _dict["工程数据组"]] # _users_id = [list(i.values())[0] for i in _dict["工程软件部"]] if self.sys == "工程软件组CAM系统": _users_id = [list(i.values())[0] for i in _dict["工程软件组"] if list(i.keys())[0] in ["张三", "田甜", "姚胜兰"]] elif self.sys == "工程软件组MI系统": _users_id = [list(i.values())[0] for i in _dict["工程软件组"] if list(i.keys())[0] in ["罗秀青", "吴贤宗", "朱奇敏", "许定红"]] elif self.sys == "工程数据组工程管理系统": _users_id = [list(i.values())[0] for i in _dict["工程数据组"]] elif self.sys == "工程数据组LOT卡系统": _users_id = [list(i.values())[0] for i in _dict["工程数据组"]] # # 测试用 # _users_id = [list(i.values())[0] for i in _dict["工程软件组"] # if list(i.keys())[0] in ["张三"]] locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8') _wc.send_text_card_message(to_users=_users_id, agent_id=1000039, file_url=self.html_file, _title=f'成本管理中心{self.sys}需求汇总-' f'{time.strftime("%Y年%m月%d日", time.localtime())}') # 发送邮件 def _send_mail(self): """ 发送邮件 :return: """ img_data_list = [] for i in self.img_list: with open(i, 'rb') as f: img_data_list.append(f'<img src="data:image/png;base64,%s" alt="Embedded Image">' % base64.b64encode(f.read()).decode('utf-8')) _h = "\n".join(img_data_list) html_text = """ <html> <head> <style> .timestamp { font-size: 24px; } .container { margin: 20px; display: flex; flex-wrap: wrap; justify-content: space-between; } .container img { margin: 20px; max-width: 46%%; margin-bottom: 4%%; border-radius: 10px; object-fit: cover; object-position: center; } body { margin: 10px; background-color: #170044; color: #FFF; } </style> </head> <body> <h2 style="text-align: center;font-size: 30px;margin-left: 20px; margin-right: 20px;"> 所有基地                                    成本管理中心需求汇总                                    %s</h2> <div class="container"> %s </div> </body> </html> """ % (time.strftime("%Y-%m-%d", time.localtime()), _h) _to_list = ["pe_software@askpcb.com", "shenglan.yao@askpcb.com", "zhangliang@askpcb.com", "xiuqing.luo@askpcb.com" ] try: SM = sendMail.MailMain("益阳210服务器(系统需求汇总分析.py)", "sysinfo@askpcb.com", _to_list, f"{html_text}", f"成本管理中心需求汇总") SM.SendMail(text_type="html") print('邮件发送成功!') except BaseException as e: print(f'邮件发送失败!错误详情:{e}')
- 完成代码
#!/usr/bin/env py3k import re import sys import os import random import time import locale import base64 import platform import matplotlib.pyplot as plt from matplotlib import colors if platform.system() == 'Windows': sys.path.append("S:\\site_data\\scripts\\py3_package") else: sys.path.append("/incam/server/site_data/scripts/py3_package") from SqlClasses import AskMiMySqlServer from GuiClasses import * from ApiClasses import * import sendMail # 开发日志 _header = { '脚本名称': '系统需求汇总分析程式', '开发人员': 'Twei Tang', '开发时间': '2023年11月21日', '版本信息': 'A.1.1', '联系方式': ( '邮箱地址<>', '微信号码<358143105>', '手机号码<13627441202>' ), '开发信息': ( '无' ), '修改信息': ( '历史版本(A.1.0),首次开发测试,暂无版本变更信息', '当前版本(A.1.1),添加台湾&泰国需求汇总数据,修改工程管理中心为成本管理中心,2024/5/15,周三,唐伟' ), '沟通记录': ( '无' ) } class DoMain: def __init__(self): self.app = QApplication(sys.argv) self.gui = MainGui() self.sql = AskMiMySqlServer(_port=3360, db="epms") # 字典形式返回数据 self.sys = "所有系统" if len(sys.argv) > 1: if sys.argv[1] in ["CAM系统"]: self.sys = "工程软件组CAM系统" elif sys.argv[1] in ["MI系统"]: self.sys = "工程软件组MI系统" elif sys.argv[1] in ["管理系统"]: self.sys = "工程数据组工程管理系统" elif sys.argv[1] in ["LOT系统"]: self.sys = "工程数据组LOT卡系统" elif sys.argv[1] in ["联络函"]: self.sys = "工程软件部联络函" else: self.sys = "日常维护&其他" self.data = self._get_base_data() if platform.system() == 'Windows': self.m_json = self.gui.GetConFigMethods("S:\\site_data\\scripts\\py3_package\\config\\公共制作\\系统需求汇总配置文档.json") self.img_path = self.m_json["win系统图表存储位置"] self.html_path = self.m_json["win系统html缓存位置"] else: self.m_json = self.gui.GetConFigMethods(self.gui.config_path + "/公共制作/系统需求汇总配置文档.json") self.img_path = self.m_json["图表存储位置"] self.html_path = self.m_json["html缓存位置"] self.img_list = [] # 获取全部需求信息数据 def _get_base_data(self): """ 获取全部需求信息数据 :return: 基础信息数据字典列表 """ _where = "" if self.sys in ["工程软件组CAM系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('Incam', 'Genesis')") elif self.sys in ["工程软件组MI系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('Inplan', '物料')") elif self.sys in ["工程数据组工程管理系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('工程管理系统')") elif self.sys in ["工程数据组LOT卡系统"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('LOT卡')") elif self.sys in ["工程软件部联络函"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) in ('联络函')") elif self.sys in ["日常维护&其他"]: _where = ("WHERE (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND " "Id=requirement_0_main.RequireSoftware) not in " "('Incam', 'Genesis', 'Inplan', '物料', '工程管理系统', 'LOT卡', '联络函')") _sql = f""" SELECT (SELECT DicName FROM sys_dictionarylist WHERE Dic_ID=(SELECT Dic_ID FROM sys_dictionary WHERE DicNo='Site') AND DicValue=requirement_0_main.Site) AS 基地, (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NULL AND Id=requirement_0_main.RequireSoftware) AS 需求软件, (SELECT TypeValue AS _VALUE FROM requirement_1_type WHERE ParentId IS NOT NULL AND Id=requirement_0_main.RequireType) AS 需求类别, (SELECT DicName FROM sys_dictionarylist WHERE Dic_ID=(SELECT Dic_ID FROM sys_dictionary WHERE DicNo='RequireStatus') AND DicValue=requirement_0_main.RequireStatus) AS 需求状态, JobName AS 参考料号, Topic AS 主题, Detail AS 详细描述, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.Register) AS 登记人, RegisterDate AS 登记时间, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.RequireAudit) AS 需求审核人, RequireAuditTime AS 需求审核时间, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.DevAuditor) AS 开发审核人, DevAuditorTime AS 开发审核时间, PlannedCompletionTime AS 计划完成时间, ActualCompletionTime AS 实际完成时间, ActualCompletionTime AS 实际完成时间, (SELECT UserTrueName FROM sys_user WHERE User_Id = requirement_0_main.TestPerson) AS 测试人, TestTime AS 测试时间, (SELECT DicName FROM sys_dictionarylist WHERE Dic_ID=(SELECT Dic_ID FROM sys_dictionary WHERE DicNo='TestResult') AND DicValue=requirement_0_main.TestResult) AS 测试结果, TestRemark AS 测试意见, TestBackTimes AS 退回次数 FROM requirement_0_main {_where} """ _data = self.sql.exec_query(_sql) return _data # 统计各基地需求信息 def _get_reviewed_info(self, _site): """ 统计各基地需求信息 :return: """ _dict = {} _num = 0 for i in self.data: if _site in ["湖南", "广东", "泰国&台湾", "全部"]: if i["基地"] == _site: _num += 1 if i["需求状态"] not in _dict.keys(): _dict[i["需求状态"]] = 0 _dict[i["需求状态"]] += 1 else: _num += 1 if i["需求状态"] not in _dict.keys(): _dict[i["需求状态"]] = 0 _dict[i["需求状态"]] += 1 _str = _site if _site in ["全部"]: _str = "其他" if _site not in ["湖南", "广东", "泰国&台湾", "全部"]: _str = "" # 中文标签 plt.rcParams['font.sans-serif'] = ['STKaiti'] # 指定默认字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号'-'显示为方块的问题 # 创建图像 # 组合标签和数据,并根据数据排序 data = sorted(zip(_dict.keys(), _dict.values()), key=lambda x: x[1], reverse=True) if len(data) == 0: return labels, sizes = zip(*data) labels = tuple([i.split(",")[0] + ",\n" + i.split(",")[1] if "," in i else i for i in list(labels)]) # 获取所有颜色 _colors = list(colors.TABLEAU_COLORS.values()) plt.figure(figsize=(12, 6)) # 设置图像大小为8x6 plt.bar(labels, sizes, width=0.3, color=_colors, edgecolor='black') plt.title(f'{_str}需求汇总({time.strftime("%Y-%m-%d", time.localtime())})', fontsize=16) # 添加标题 plt.xlabel(f'{_str}总需求汇总数量:{_num}', fontsize=14) # 添加x轴标签 plt.ylabel('数量', fontsize=12) # 添加y轴标签 plt.xticks(fontsize=10) # 设置x轴刻度标签字体大小 plt.yticks(fontsize=10) # 设置y轴刻度标签字体大小 # 添加数据标签 for i, v in enumerate(sizes): plt.text(i, v + 1, str(v), ha='center', fontsize=10) plt.tight_layout() # 自动调整布局 plt.savefig(f'{self.img_path}/{_str}成本管理中心需求汇总.png') self.img_list.append(f'{self.img_path}/{_str}成本管理中心需求汇总.png') # plt.show() def _send_wechat_message(self): """ 推送信息 :return: """ img_data_list = [] for i in self.img_list: with open(i, 'rb') as f: img_data_list.append(f'<img src="data:image/png;base64,%s" alt="Embedded Image">' % base64.b64encode(f.read()).decode('utf-8')) _h = "\n".join(img_data_list) html_text = """ <html> <head> <style> .timestamp { font-size: 24px; } .container { margin: 20px; display: flex; flex-wrap: wrap; justify-content: space-between; } .container img { margin: 20px; max-width: 46%%; margin-bottom: 4%%; border-radius: 10px; object-fit: cover; object-position: center; } body { margin: 10px; background-color: #170044; color: #FFF; } </style> </head> <body> <h2 style="text-align: center;font-size: 30px;margin-left: 20px; margin-right: 20px;"> 所有基地                                    成本管理中心需求汇总(%s)                                    %s</h2> <div class="container"> %s </div> </body> </html> """ % (self.sys, time.strftime("%Y-%m-%d", time.localtime()), _h) self.html_file = f"{self.html_path}\\{self.sys}-{time.strftime('%Y-%m-%d', time.localtime())}.html" with open(self.html_file, "w") as f: f.write(html_text) _wc = WeChatMessage() _dict = _wc.get_users_id() _users_id = [list(i.values())[0] for i in _dict["工程软件部"] + _dict["工程数据组"]] # _users_id = [list(i.values())[0] for i in _dict["工程软件部"]] if self.sys == "工程软件组CAM系统": _users_id = [list(i.values())[0] for i in _dict["工程软件组"] if list(i.keys())[0] in ["张三", "田四", "姚老五"]] elif self.sys == "工程软件组MI系统": _users_id = [list(i.values())[0] for i in _dict["工程软件组"] if list(i.keys())[0] in ["罗八", "吴九", "朱十一", "许大麻"]] elif self.sys == "工程数据组工程管理系统": _users_id = [list(i.values())[0] for i in _dict["工程数据组"]] elif self.sys == "工程数据组LOT卡系统": _users_id = [list(i.values())[0] for i in _dict["工程数据组"]] # # 测试用 # _users_id = [list(i.values())[0] for i in _dict["工程软件组"] # if list(i.keys())[0] in ["唐伟"]] locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8') _wc.send_text_card_message(to_users=_users_id, agent_id=1000039, file_url=self.html_file, _title=f'成本管理中心{self.sys}需求汇总-' f'{time.strftime("%Y年%m月%d日", time.localtime())}') # 发送邮件 def _send_mail(self): """ 发送邮件 :return: """ img_data_list = [] for i in self.img_list: with open(i, 'rb') as f: img_data_list.append(f'<img src="data:image/png;base64,%s" alt="Embedded Image">' % base64.b64encode(f.read()).decode('utf-8')) _h = "\n".join(img_data_list) html_text = """ <html> <head> <style> .timestamp { font-size: 24px; } .container { margin: 20px; display: flex; flex-wrap: wrap; justify-content: space-between; } .container img { margin: 20px; max-width: 46%%; margin-bottom: 4%%; border-radius: 10px; object-fit: cover; object-position: center; } body { margin: 10px; background-color: #170044; color: #FFF; } </style> </head> <body> <h2 style="text-align: center;font-size: 30px;margin-left: 20px; margin-right: 20px;"> 所有基地                                    成本管理中心需求汇总                                    %s</h2> <div class="container"> %s </div> </body> </html> """ % (time.strftime("%Y-%m-%d", time.localtime()), _h) _to_list = ["张三@henxing.com", "姚老五@henxing.com", "赵二@henxing.com", "罗八@henxing.com" ] try: SM = sendMail.MailMain("XXX服务器(系统需求汇总分析.py)", "你的邮箱服务器账号", _to_list, f"{html_text}", f"成本管理中心需求汇总") SM.SendMail(text_type="html") print('邮件发送成功!') except BaseException as e: print(f'邮件发送失败!错误详情:{e}') if __name__ == "__main__": _do = DoMain() _do._get_reviewed_info(_site="湖南") _do._get_reviewed_info(_site="广东") _do._get_reviewed_info(_site="泰国&台湾") _do._get_reviewed_info(_site="全部") _do._get_reviewed_info(_site="所有") # _do._send_mail() _do._send_wechat_message() sys.exit()
4.自动执行
- Windows自动任务计划
- 1.打开开始菜单搜索"任务计划程序"单击打开
- 2.打开任务计划配置主界面后单击"创建任务"
- 3.分别按下图配置你的自动任务
常规
触发器
在弹出的编辑窗口配置触发器,完成后单击确定
操作
在弹出的编辑窗口配置操作,完成后单击确定
条件
如图设置条件
设置
如图设置
- 1.打开开始菜单搜索"任务计划程序"单击打开