Agendador de tarefas no Windows 7

0

Eu criei uma tarefa com três ações que gostaria de executar na seguinte ordem:

  1. Exibir mensagem para o usuário
  2. Arquivos de backup (arquivo em lotes)
  3. Computador de desligamento (arquivo em lotes)

Como eu entendi desta pergunta , eles devem ser executados sequencialmente a partir do topo a lista de ações na parte inferior. Meu problema é que assim que eu começar a tarefa, o computador será desligado. Nenhuma mensagem é relatada ao usuário e não sei se ele chama a tarefa de backup. Demora cerca de 1 hora para concluir o backup. Eu testei que o arquivo de lote funciona quando você clica duas vezes nele e o faz.

Você pode me ajudar a obter a mensagem a ser mostrada e a tarefa de backup concluída antes do desligamento?

    
por 7heViking 07.09.2015 / 12:33

2 respostas

0

Eu finalmente encontrei o problema, que era uma mistura do arquivo em lote e da definição de ação no agendador de tarefas.

  • O primeiro problema foi que o arquivo em lote que eu havia escrito usou a biblioteca 7-zip. Eu tinha definido alguns caminhos de pasta com as definições de letra (no meu caso H: /) que funcionou quando eu iniciei o arquivo de lote manualmente. Mas ao executar em uma tarefa, eu tive que usar o caminho de rede completo como \something.com\public\home\...
  • O segundo problema foi que, na janela de definição de ação, eu também tive que definir o argumento opcional: Start in. Ele deve apontar para a pasta onde o arquivo de lote está localizado e, além disso, não incluir "no começando e terminando como o campo de localização do script. Não sei porquê.

Agora as ações estão sendo executadas sequencialmente na tarefa:)

    
por 08.09.2015 / 08:42
2

Acho que posso ter a solução:

Dependendo do conteúdo da caixa de mensagem, talvez eu possa ajudar com essa parte dela - se ela simplesmente indicar algum texto, com um OK ou um botão Sim / Não, então posso fazer isso .

O que eu proponho é criar um arquivo de lote, para fazer todas as operações que você listou.

Dessa forma, você pode definir a ordem, como quiser. E você sabe que uma tarefa não pode ser executada até que a outra seja concluída.

O código da caixa de perguntas varia muito, dependendo do tipo de caixa que você procura. O código em si é bastante simples e apenas algumas linhas, uma vez que você tenha decidido que tipo de caixa de mensagem está procurando.

Aqui está o código para a caixa de mensagem (esperamos que seja depois disso):

echo wscript.quit MsgBox ("Message", Number, "Title") > message.vbs
wscript //nologo message.vbs
set value=%errorlevel%
del message.vbs
if "%value%"=="1" goto :ok
if "%value%"=="2" goto :cancel
if "%value%"=="3" goto :abort
if "%value%"=="4" goto :retry
if "%value%"=="5" goto :ignore
if "%value%"=="6" goto :yes
if "%value%"=="7" goto :no

Obviamente, você substitui a Mensagem pelo conteúdo da caixa de mensagem, pelo Título com o título e pelo Número com um dos números documentados abaixo. Certifique-se de incluir as aspas quando necessário (onde elas já estão no código acima).

Number (define os botões na caixa de mensagem):

  • Se 1, você recebe uma caixa de mensagem com OK e Cancelar
  • Se 2, você recebe uma caixa de mensagem com Abortar, Repetir e Ignorar
  • Se 3, você recebe uma caixa de mensagem com Sim, Não e Cancelar
  • Se 4, você recebe uma caixa de mensagem com Sim e Não
  • Se 5, você recebe uma caixa de mensagem com Repetição e Cancelar
  • Se 6 e acima, você obtém o mesmo resultado de 1. (99% de certeza)

A variável %value% fornece uma representação numérica de qual botão você pressionou. No código que listei acima, documentei cada resultado, na forma de uma parte do código que vai para um local no script em lote, intitulado isso. Espero que você entenda os locais, definidos por :example , em que example é o nome do local. Isso significa que, onde diz goto :ok , há um local chamado :ok em seu script em lote, em que o código correspondente é armazenado para esse resultado. É claro que você não precisa ter o comando goto no final da instrução if se você não quiser, eu apenas incluí isso, como uma maneira fácil de distinguir qual valor corresponde a qual botão.

Após a caixa de mensagem no seu script em lote, você teria seu programa de backup. Depois disso, o seu comando de desligamento (shutdown -s eu presumo?)

É isso! Tudo o que você precisa fazer agora é fazer uma tarefa no Agendador de Tarefas, executar o arquivo em lote e o Voilà! Você deve ter uma caixa de mensagem, backup e desligamento, executados consecutivamente.

    
por 07.09.2015 / 13:31