Windows 任务计划程序 - 安排一项任务在另一个任务完成 15 分钟后运行

Windows 任务计划程序 - 安排一项任务在另一个任务完成 15 分钟后运行

我在 Windows 任务计划程序中设置了两个任务。一个任务应该在凌晨 3:00 运行,另一个任务应该在 15 分钟后运行。如果任务计划运行时计算机处于关闭状态,则任务将设置为在计算机启动时运行。这样做的问题是两个任务不能同时运行。我想要做的是等待两个任务中的第一个任务完成,一旦它完成,等待 15 分钟再开始第二个任务。我如何在任务计划程序中设置它?我无法将系统设置为在第一个任务完成后立即开始执行第二个任务,因为这两个任务只不过是调用另一个程序的批处理文件,而这些批处理文件对该程序执行的两件事不能同时完成。由于第一个任务只需要 5 分钟,所以我需要为第二个任务的开始留出一些余地。

答案1

你可以使用调度任务或者从批处理文件中并将任务安排到 15 分钟后执行。

答案2

我很感激这已被标记为已回答,但在我的场景中我有一个要求,我无法修改“触发”任务。

解决方案是创建一个带有自定义事件过滤器触发器的任务,该触发器在触发器任务完成时触发。此解决方案的来源来自这里但我已在下面解释了主要部分。

在任务计划程序中选择触发任务,然后在下面的窗格中选择“历史记录”选项卡。假设此任务至少完成过一次,您应该能够看到任务类别为“任务已完成”的事件。右键单击“任务已完成”事件并选择“事件属性”。在打开的“事件属性”窗口的“详细信息”选项卡中,选择 XML 视图,该视图应如下所示(可能已删除敏感信息):

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
        <Provider Name="Microsoft-Windows-TaskScheduler" Guid="{DE7B24EA-73C8-4A09-985D-5BDADCFA9017}" /> 
        <EventID>102</EventID> 
        <Version>0</Version> 
        <Level>4</Level> 
        <Task>102</Task> 
        <Opcode>2</Opcode> 
        <Keywords>0x8000000000000001</Keywords> 
        <TimeCreated SystemTime="2014-01-21T15:28:27.746689500Z" /> 
        <EventRecordID>978</EventRecordID> 
        <Correlation ActivityID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" /> 
        <Execution ProcessID="10656" ThreadID="11656" /> 
        <Channel>Microsoft-Windows-TaskScheduler/Operational</Channel> 
        <Computer>XXXXXXXXXXXXXXXXXXXXXXXXXX</Computer> 
        <Security UserID="S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXX" /> 
    </System>
    <EventData Name="TaskSuccessEvent">
        <Data Name="TaskName">\ping</Data> 
        <Data Name="UserContext">XXXXXXXXXX\XXXXXXXXXXXXX</Data> 
        <Data Name="InstanceId">{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</Data> 
    </EventData>
</Event>

您需要编写的自定义触发器基本上是一个 XPath 表达式,其计算结果为与触发任务的任务完成事件相匹配的过滤器。对于名为“ping”的任务,触发器将是:

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[EventData[@Name='TaskSuccessEvent'][Data[@Name='TaskName']='\ping']]</Select>
   </Query>
</QueryList>

在“编辑触发器”窗口中,您可以设置“延迟任务:15 分钟”,这应该可以实现所需的结果,而无需修改原始任务。

还有很多其他 XPath 可以编写,以制作更精美的触发器。这博客文章提供了更多信息,并且这个Microsoft 文档似乎是深入阅读的一个良好开端。

相关内容