Você pode usar Schtasks ou At a partir do arquivo de lote e agende a tarefa 15 minutos no futuro. / p>
Eu tenho duas tarefas configuradas no Agendador de Tarefas do Windows. Um deve rodar às 3:00 da manhã e o outro deve rodar 15 minutos depois. Se o computador estiver desligado quando as tarefas estiverem agendadas para execução, as tarefas serão definidas para serem executadas quando o computador for inicializado. O problema é que as duas tarefas não podem ser executadas ao mesmo tempo. O que eu quero fazer é aguardar que a primeira das duas tarefas seja concluída e, depois de concluída, aguarde 15 minutos antes do início da segunda tarefa. Como posso configurá-lo no Agendador de Tarefas? Não consigo configurar o sistema para que a segunda tarefa comece a ser executada assim que a primeira é executada, pois as duas tarefas não são nada mais do que arquivos em lote que invocam outro programa e as duas coisas que esses arquivos em lote fazem com o programa não pode ser feito ao mesmo tempo. Como a primeira tarefa deve durar apenas 5 minutos, eu preciso dar alguma margem para a segunda tarefa começar.
Agradeço que isso já tenha sido marcado como respondido, mas tenho uma exigência em meu cenário em que não posso modificar a tarefa de "acionamento".
A solução é criar uma tarefa com um acionador de filtro de evento personalizado que é acionado quando a tarefa de acionamento é concluída. A origem dessa solução é proveniente de aqui mas eu expliquei a parte principal abaixo.
No Agendador de Tarefas, selecione a tarefa do acionador e, no painel abaixo, selecione a guia Histórico. Supondo que essa tarefa tenha sido concluída pelo menos uma vez antes, você poderá ver um evento com uma Categoria de Tarefa Tarefa Concluída. Clique com o botão direito do mouse no evento Tarefa Concluída e selecione Propriedades do Evento. Na guia Detalhes da janela Propriedades do evento que é aberta, selecione a Exibição XML, que deve ser algo como isto (informações potencialmente confidenciais removidas):
<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>
O disparador personalizado que você precisa escrever é basicamente uma expressão XPath que avalia um filtro que corresponde ao evento Tarefa Concluída da tarefa de disparo. Com uma tarefa chamada "ping", o acionador seria:
<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>
Na janela Editar Acionador, você pode definir a 'Tarefa de Atraso para: 15 minutos', que deve alcançar o resultado desejado sem a necessidade de modificar a tarefa original.
Existem muitos outros XPaths que podem ser escritos para criar gatilhos mais sofisticados. Esta postagem no blog fornece um pouco mais de informação e esta documentação da Microsoft parece um bom começo para uma leitura mais profunda.
Tags windows scheduled-tasks