首页 > 系统相关 >通过脚本批量修改windows系统任务计划

通过脚本批量修改windows系统任务计划

时间:2023-12-13 16:01:42浏览次数:36  
标签:脚本 task 批量 windows 任务 TASK REM print def

需求:修改已有的windows系统任务计划

方法:

一、通过python实现

需要安装pywin32模块

pip install pywin32

查询任务计划

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('\\rpa')]
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:
        print('Task: %s' % task.Definition.Triggers[0].StartBoundary)
        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\n' % task.LastTaskResult)
        print('Last Result: %s\n' % task.GetRunTimes)
        task.Enabled = True # True表示啟用,False表示停用
        task.Run('VT_NULL')
        status = task.Stop(0) # 0表示立即停止
        print('Stop status: %s\n' % status)
        print('State      : %s' % TASK_STATE[task.State])
print('Listed %d tasks.' % n)


修改任务计划

from datetime import datetime, timedelta

import win32com.client

# 连接计划任务服务
scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect()

# 创建任务对象
# 获取任务定义的文件夹
root_folder = scheduler.GetFolder('\\')
# 创建对象 flags参数为0 固定
task_def = scheduler.NewTask(0)

TASK_ACTION_EXEC = 0
action = task_def.Actions.Create(TASK_ACTION_EXEC)
action.ID = 'TEST'
# 脚本只需 设置Path 为脚本绝对路径即可
action.Path = r"E:\test.exe"
# action.Path = "netstat"
# action.Arguments = "-ano"

task_def.RegistrationInfo.Description = '定时任务描述'  # 任务描述
task_def.RegistrationInfo.Author = "脚本创建"  # 创建者

# 为“任务计划程序”设置任务设置信息 创建一个 TaskSettings 对象。
task_def.Settings.Enabled = True
# task_def.Settings.StopIfGoingOnBatteries = False
# 超过其计划时间后的任何时间启动任务
task_def.Settings.StartWhenAvailable = True
task_def.Settings.Hidden = False
# 设置 如果任务失败,按以下频率重新启动
task_def.Settings.RestartCount = 3  # 任务计划程序尝试重启任务的次数。
# 该值指定任务计划程序尝试重启任务的时间 必须设置 RestartCount 属性
task_def.Settings.RestartInterval = "PT20M"

# 指定每日触发器的常量。1:只运行一次, 2: 每日执行
TASK_TRIGGER_TIME = 2
# 创建一个每日触发器。
trigger = task_def.Triggers.Create(TASK_TRIGGER_TIME)

# 当前时间30秒后执行该任务  必要参数
# isoformat() 转换时间格式: YYYY-MM-DDTHH:MM:SS
trigger.StartBoundary = (datetime.now() + timedelta(seconds=30)).isoformat()
# 获取或设置触发器停用的日期和时间。
# trigger.EndBoundary = (datetime.now() + timedelta(minutes=5)).isoformat()
trigger.Id = "DailyTriggerId"
# 是否启用触发器。
trigger.Enabled = True

# 重复模式的时间。PnYnMnDTnHnMnS PT5M指定5分钟 如果未为持续时间指定任何值,则模式将无限期重复。
trigger.Repetition.Interval = "PT5M"

# 注册任务
TASK_CREATE_OR_UPDATE = 6
TASK_LOGON_NONE = 0
root_folder.RegisterTaskDefinition(
    "ServerMonitor",  # 任务的名称
    task_def,  # 构建的任务(有动作数据、触发数据、描述数据等)
    TASK_CREATE_OR_UPDATE,  # 如果任务存在,则更新任务
    '',  # 用于注册任务的用户凭据
    '',  # 用于注册任务的userId的密码
    TASK_LOGON_NONE  # 未指定登录方法。
)




二、通过bat脚本实现

(一) 通过bat脚本直接操作

@echo off
set "taskName=test"
set "newArguments=新参数"

REM 获取任务计划的XML配置
schtasks /query /tn "%taskName%" /xml > TaskConfig.xml

@REM REM 使用For循环遍历导出的XML文件
@REM for /F "tokens=*" %%A in ('type TaskConfig.xml') do (
@REM   REM 查找并替换任务计划的参数
@REM   set "line=%%A"
@REM   setlocal enabledelayedexpansion
@REM   set "line=!line:%oldArguments%=%newArguments%!"
@REM   echo !line!>> TaskConfigUpdated.xml
@REM   endlocal
@REM )

@REM REM 删除旧的任务计划
@REM schtasks /delete /tn "%taskName%" /f

@REM REM 创建更新后的任务计划
@REM schtasks /create /tn "%taskName%" /xml TaskConfigUpdated.xml

@REM REM 删除临时文件
@REM del TaskConfig.xml TaskConfigUpdated.xml

@REM echo 任务计划的参数已成功修改。




(二) 导出文件再通过脚本导入

先导出修改好的任务计划

通过脚本批量修改windows系统任务计划_python


文件内容

通过脚本批量修改windows系统任务计划_python_02


再通过脚本导入修改好的任务计划

@echo off
REM 设定任务名
set "taskName=test"
REM 删除任务
schtasks /delete /tn "%taskName%" /f
REM 根据文件创建任务
schtasks /Create /XML "C:\test2.xml" /TN "%taskName%"


标签:脚本,task,批量,windows,任务,TASK,REM,print,def
From: https://blog.51cto.com/voice/8803819

相关文章

  • [JMeter] Apache Jmeter导入jmx压测脚本时,报错CannotResolveClassException: xxx
    1问题描述Jmeter导入jmx压测脚本时,报错CannotResolveClassException:xxxJMeterVersion:5.5JDK:8报错的关键信息:kg.apc.jmeter.vizualizers.CorrectedResultCollectorcom.thoughtworks.xstream.converters.ConversionException可见:缺少相关依赖包。2解......
  • 通过excel表格批量修改文件夹名称
    脚本功能这个脚本用于重命名文件夹,特别是在多层嵌套的文件夹结构中。它通过读取一个Excel表格来获取重命名的信息。表格的第一列应包含当前的文件夹名称,第二列包含您想要更改为的新名称。脚本会递归地遍历指定路径下的所有文件夹,并根据表格中的信息重命名匹配的文件夹。 impo......
  • mybatis 批量插入
    <insertid="xxxxxxx"parameterType="xxx.xx.xxxx.xxxxx.xxxxxx">insertintot_form_detail(xxxx1,xxxx2,xxxx3,xxxx4,xxxx5)values<foreachitem="item&......
  • springboot+vue小白升级之路07-快速实现批量删除、小白升级之路08-实现批量导入导出ex
    我们接着之前的内容,全部代码我贴一下,大家参考使用。数据库droptableifexistsan_user;createtablean_user( idintnotnullauto_incrementprimarykeycomment'主键id', namevarchar(255)notnulluniquecomment'姓名', `password`varchar(255)notnullcomment......
  • 油猴脚本
    油猴脚本用户脚本管理:通过Tampermonkey,您可以轻松地安装、管理和运行用户脚本。您可以从用户脚本仓库或其他来源获取用户脚本,并在插件中进行管理。自定义网页功能:使用Tampermonkey,您可以根据自己的需求编写用户脚本,以自定义网页的功能和外观。例如,您可以删除广告、添加快捷......
  • windows安装mysql时卡write configuration file曲线救国 mysql 5.7.39 免安装(ZIP压缩
    现象描述现象描述:使用安装包安装时,卡:writeconfigurationfile解决办法解决办法:曲线救国mysql5.7.39免安装(ZIP压缩包)版本安装配置1.下载mysql官网:mysql官网,点击前往2.安装下载后解压到任意文件夹,如我所解压的路径为:D:\ProgramFiles\MySQL\mysql-5.7将解压......
  • Windows、Linux 和 Mac:操作系统之间的比较
    Windows系统、Linux系统与Mac系统:操作系统的对比与选择操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。以下是W......
  • Kvaser Memorator Pro的T脚本使用
    广州智维KvaserMemoratorPro作为KvaserCAN中的高端产品具备离线采集的记录功能,同时在其Pro专业版中更是支持通过T脚本进行事件控制。T脚本编辑工具在官方CANLIB包下有个TRX工具,用于T脚本编译生成可下载进MemoratorPro的可执行文件。TRX工具导入原程序文件,start运行程序会自动......
  • 通过PowerShellPlus示例脚本学习PowerShell之-输出SQLServer服务属性
    ##=====================================================================##Title:Get-MSSQL-ServerAttrib-Csv##Description:ConnecttoSQLServerandoutputserverattributestoCSV##Author:Idera##Date:1/28/2009##Input......
  • shell脚本之系统用户筛选与日志文件筛选
    系统用户筛选利用shellj脚本遍历/etc/passwd文件,提取出其中的普通用户,无登录权限用户以及超级管理员用户;脚本内容创建空数组,分别用于存放普通用户、不具备登录权限的用户、超级管理员用户。使用for循环打印当前系统内的所有用户名,并检查当前用户的id信息,当id信息大于等于1000时则......