2

У меня есть две задачи, настроенные в планировщике задач Windows. Один должен работать в 3 часа ночи, а другой - через 15 минут. Если компьютер выключен, когда задачи запланированы для запуска, то задачи будут запускаться при запуске компьютера. Проблема в том, что две задачи не могут выполняться одновременно. Что я хочу сделать, так это дождаться завершения первой из двух задач, а после ее завершения подождать 15 минут, прежде чем начнется вторая задача. Как я могу настроить это в планировщике задач? Я не могу настроить систему так, чтобы вторая задача начала выполняться, как только первая будет выполнена, потому что эти две задачи - не что иное, как командные файлы, которые вызывают другую программу, и две вещи, которые эти командные файлы делают с программой. не может быть сделано в то же время. Поскольку первое задание должно занимать всего 5 минут, мне нужно дать некоторую свободу для начала второго задания.

2 ответа2

2

Вы можете использовать Schtasks или At из командного файла и запланировать задачу на 15 минут в будущем.

0

Я понимаю, что это уже помечено как ответное, но в моем сценарии есть требование, по которому я не могу изменить задачу «запуска».

Решение состоит в том, чтобы создать задачу с пользовательским триггером фильтра событий, который срабатывает после завершения триггерной задачи. Источник этого решения взят отсюда, но я объяснил основную часть ниже.

В планировщике задач выберите задачу запуска и на панели ниже выберите вкладку «Журнал». Предполагая, что это задание выполнено хотя бы один раз, прежде чем вы сможете увидеть событие с категорией задач завершенной. Щелкните правой кнопкой мыши на событии «Завершенная задача» и выберите «Свойства события». На вкладке «Сведения» в открывшемся окне «Свойства события» выберите представление 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 кажется хорошим началом для более глубокого прочтения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .