Não consigo fazer com que a opção de repetição no agendador de tarefas funcione

1

A tarefa deve executar um arquivo .js a cada minuto.

Para que isso aconteça, fiz a tarefa ser executada todos os dias às 00:00 e repita a cada 1 minuto .

No entanto, a tarefa agora sempre tem Status de Em execução sem realmente fazer nada e o Resultado da Última Execução é 0x41301 (não pode ser executado porque já está em execução).

Eu tentei fazer um trigger para cada minuto (por alguns minutos consecutivos) e isso funciona. O script estava sendo executado a cada minuto (para esses minutos), mas não consigo fazer um trigger para cada minuto do dia ...

Quando uso repetição , o processo wscript.exe é executado constantemente, e esse é o problema - quando tenho um disparador para cada minuto, o processo termina depois cada corrida.

Mas quando eu uso repetição, ele nunca termina o processo e, portanto, não é capaz de executar o script novamente. (Daí o erro: 0x41301)

Pensei que seria possível resolver isso selecionando Se a tarefa já está em execução, aplica-se a seguinte regra: a opção Parar a instância existente - no entanto, isso não se aplica a cada repetição, só se aplica a quando a tarefa começa a cada dia - eu acho; afinal esta opção não funciona.

O script .js não é executado (nem uma vez) quando eu uso repetição; se isso acontecesse, eu faria com que ele matasse o processo de wscript.exe depois de concluído.

Então, como corrijo isso?

EDITAR:

Tendo tentado criar um script .vbs e um programa em lotes, para descobrir se é a tarefa ou o script que está errado, descobri que nada funciona - minha conclusão é, portanto, que o erro está na própria tarefa .

Eu até tentei iniciar o Internet Explorer diretamente da tarefa e nem isso funcionou.

Isso quer dizer: tudo funciona, mas não enquanto a repetição estiver ativa < - qualquer tipo de repetição , tentei várias combinações possíveis de repetição e outras configurações, mas nada funciona .

Existe uma regra secreta, escondida do público, que afirma que, sempre que a repetição é ativada, o script tem que ser escrito de trás para frente em grego? Porque eu tentei isso e não funcionou!

    
por Levi Johansen 27.03.2014 / 14:04

1 resposta

1

A solução foi bastante simples, mas não óbvia.

Meu script VBS original era basicamente assim:

Set objExplorer = WScript.CreateObject _("InternetExplorer.Application", "IE_")
objExplorer.Navigate "https://domain.com/place/?token=key"

'Make window invisible
objExplorer.Visible = 0

'Wait for URL to load properly, then quit
WScript.Sleep 6000
objExplorer.quit

Este script usa o Internet Explorer para carregar o site - isso funciona, mas quando adicionei a repetição à tarefa, não funcionou.

O motivo pelo qual ele não funcionou ainda não está claro para mim, mas imagino que o uso da repetição abrirá o Internet Explorer repetidamente na mesma "tarefa" e usando a mesma memória temporária (ou algo assim) e cada a repetição achará desnecessário carregar o site porque já está na memória ...

Isso pode estar incorreto, mas resolvi o problema substituindo o script por:

On Error Resume Next
dim ObjRequest
dim URL
URL = "https://domain.com/place/?token=key"

CreateObject("Microsoft.XMLHTTP")
objRequest.open "GET", URL, false
objRequest.Send

Set objRequest = Nothing

Tudo agora funciona perfeitamente.

    
por 26.06.2014 / 14:38