python 计划任务
Python check for Completed and failed Task Windows scheduler
有谁知道我可以查看的方式或资源来检查任务计划程序中所有Windows任务的状态? 我想看看是否看到任务失败或成功。 我想在Python中做到这一点。
我已经看过一些使用win32com.client模块的信息。 我可以看到什么任务,但是找不到完成的工作的状态。
1
2 3 4 5 6 |
import win32com.client
scheduler = win32com.client.Dispatch("Schedule.Service") scheduler.Connect() tasks = scheduler.GetRunningTasks(1) names = [tasks.Item(i+1).Name for i in range(tasks.Count)] print names |
以下内容使用Task Scheduler API来打印所有已注册任务的基本信息,包括最近的运行时间和结果。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import win32com.client
TASK_ENUM_HIDDEN = 1 TASK_STATE = {0: 'Unknown', 1: 'Disabled', 2: 'Queued', 3: 'Ready', 4: 'Running'} scheduler = win32com.client.Dispatch('Schedule.Service') scheduler.Connect() n = 0 folders = [scheduler.GetFolder('\')] while folders: folder = folders.pop(0) folders += list(folder.GetFolders(0)) tasks = list(folder.GetTasks(TASK_ENUM_HIDDEN)) n += len(tasks) for task in tasks: settings = task.Definition.Settings print('Path : %s' % task.Path) print('Hidden : %s' % settings.Hidden) print('State : %s' % TASK_STATE[task.State]) print('Last Run : %s' % task.LastRunTime) print('Last Result: %s ' % task.LastTaskResult) print('Listed %d tasks.' % n) |
这仅从列表中的根文件夹开始。每次循环都会弹出一个文件夹。推送其所有子文件夹;并列出文件夹中的任务。一直持续到文件夹列表为空。
COM接口
- ITaskService
- ITaskFolder
- IRegisteredTask
- ITaskDefinition
- ITaskSettings
另外,这是一个walk_tasks生成器,它基于标准库的os.walk建模。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import os
import pywintypes import win32com.client TASK_ENUM_HIDDEN = 1 TASK_STATE = { 0: 'Unknown', 1: 'Disabled', 2: 'Queued', 3: 'Ready', 4: 'Running' } def walk_tasks(top, topdown=True, onerror=None, include_hidden=True, serverName=None, user=None, domain=None, password=None): scheduler = win32com.client.Dispatch('Schedule.Service') scheduler.Connect(serverName, user, domain, password) if isinstance(top, bytes): if hasattr(os, 'fsdecode'): top = os.fsdecode(top) else: top = top.decode('mbcs') if u'/' in top: top = top.replace(u'/', u'\') include_hidden = TASK_ENUM_HIDDEN if include_hidden else 0 try: top = scheduler.GetFolder(top) except pywintypes.com_error: if onerror is not None: onerror(error) return for entry in _walk_tasks_internal(top, topdown, onerror, include_hidden): yield entry def _walk_tasks_internal(top, topdown, onerror, flags): try: folders = list(top.GetFolders(0)) tasks = list(top.GetTasks(flags)) except pywintypes.com_error as error: if onerror is not None: onerror(error) return if not topdown: for d in folders: for entry in _walk_tasks_internal(d, topdown, onerror, flags): yield entry yield top, folders, tasks if topdown: for d in folders: for entry in _walk_tasks_internal(d, topdown, onerror, flags): yield entry |
例
1
2 3 4 5 6 7 8 9 10 11 12 13 |
if __name__ == '__main__':
n = 0 for folder, subfolders, tasks in walk_tasks('/'): n += len(tasks) for task in tasks: settings = task.Definition.Settings print('Path : %s' % task.Path) print('Hidden : %s' % settings.Hidden) print('State : %s' % TASK_STATE[task.State]) print('Last Run : %s' % task.LastRunTime) print('Last Result: %s ' % task.LastTaskResult) print('Listed %d tasks.' % n) |
可以使用schtasks和at从命令行访问任务计划程序
schtasks:https://technet.microsoft.com/zh-CN/library/cc772785%28v=ws.10%29.aspx
网址:https://technet.microsoft.com/zh-cn/library/cc755618%28v=ws.10%29.aspx
使用subprocess.check_output从python运行schtasks /query
使用python运行Windows Shell命令
https://technet.microsoft.com/zh-CN/library/cc722006.aspx
tasklist命令列出所有正在运行的程序和服务,或者在Powershell get-process中列出
https://superuser.com/questions/914782/how-do-you-list-all-processes-on-the-command-line-in-windows
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-03-26 Container详解
2019-03-26 flutter控件之ExpansionPanelList
2019-03-26 flutter屏幕适配
2019-03-26 Flutter 获取控件尺寸和位置