Estou tentando executar um arquivo em lotes no Windows 7 no Agendador de tarefas. Eu posso executar bem o arquivo em lotes se executá-lo no prompt de comando.
Se eu executá-lo no Agendador de tarefas para executar apenas quando o usuário estiver conectado, a tarefa será executada sem problemas. No entanto, quando é executado quando o usuário não está conectado, o Agendador de Tarefas parece estar executando o arquivo, mas nada acontece.
Tentei alterar o arquivo em lotes para nada além da linha a seguir para garantir que não seja por causa do conteúdo do arquivo em lotes:
echo "success" >> c:\temp\test.log
e isso não funciona. Alguma ideia? Eu tenho que ser executado com os privilégios mais altos e com uma conta de administrador que tenha permissões totais para o arquivo em lotes e a pasta em que o arquivo está sendo gravado.
fonte
Respostas:
CALENDÁRIO DE TAREFAS: O SCRIPT DO LOTE AGENDADO NÃO FUNCIONA
Propriedades do Agendador de Tarefas. . .
No Windows
Task Scheduler
no trabalhoProperties
(veja a maioria das capturas de tela na parte inferior) na. . .1.
General
, verifique se as opções abaixo estão marcadas / desmarcadas ou desmarcadas, conforme mostrado na Tela de impressão ARun only when user is logged on
Run whether user is logged on or not
Run with the highest privileges
2.
Conditions
guia, verifique se as opções abaixo estão selecionadas , marcadas ou desmarcadas, conforme mostrado na Tela de impressão BWake the computer to run this task
3.
Actions
guia, cliqueEdit
e verifique se a opçãoStart in (optional)
está definida como mostrado no exemplo abaixo ( NÃO coloque aspas duplas) para o caminho completo que indica onde o script em lote está localizado SEM uma barra invertida final "\
" Tela de impressão CCONSIDERAÇÕES DE SEGURANÇA
Depois que você pressionar
OK
( 2. acima), a credencial será solicitada para ser executada como, e essa credencial é o que precisará acessarEXECUTE
o arquivo em lotes onde ele existe e também precisará acessar para fazer o que o arquivo em lotes estiver executando. que você escreveu.Talvez seja melhor configurar uma conta de usuário de serviço / proxy estático para esse processo e usar suas credenciais para executá-lo. Você precisaria garantir que sua senha seja forte e configurada para nunca expirar - e precisa acessar
EXECUTE
o lote e executar o que o processo de script em lote estiver executando e quaisquer comandos e recursos, etc. utiliza também.Parece que a opção que
Run whether user is logged on or not
você DEVE verificarRun with highest privileges
é realmente executada conforme o esperado no Agendador de tarefas.Verificação de erros
Se houver um problema com o script em lote real, mas o Agendador de Tarefas do Windows realmente o executar para executá-lo, mas a lógica do script em lotes for errada, etc. por qualquer motivo, o Agendador de Tarefas talvez não veja essa falha nesse nível. De sua perspectiva (por padrão, na maioria das vezes), ele está executando o arquivo em lotes, desde que possa executá-lo e tenha acesso a isso, seu trabalho é realizado com êxito.
Adicione verificação de erro ou log à lógica do script em lote para capturar (ou solucionar problemas ) problemas nesse nível, incluindo a garantia de que o contexto de segurança que o agendador em lote o executa como tenha acesso adequado aos comandos, recursos etc., nos quais o script em lote é executado.
Considerações sobre Diretiva de Grupo
VERIFIQUE A POLÍTICA DO GRUPO E LIGUE COMO PERMISSÕES DE TRABALHO DE LOTE
Lógica de script em lote com unidades mapeadas ou caminho UNC completo e problemas. . .
Se o seu script estiver referenciando uma unidade de rede mapeada, mas você desejar
Run whether the user is logged on or not
, nesse contexto, o mapeamento da unidade pode não estar lá para o processo em lote fazer o que é esperado.Se possível, use
UNC
caminhos na lógica de script em lote em vez de uma letra de unidade mapeada para evitar problemas. Caso contrário, pode ser necessário usarPUSHD \\ServerName\ShareName
no início do processo em lote e depoisPOPD
no final do processo em lote. Você pode mapear a unidadeNET USE X: \\ServerName\ShareName
no início do processo em lote e, em seguida, desconectar a unidadeNET USE X: /DELETE
no final do processo em lote.OUTRAS
MS HOTFIX (KB977353): O item de preferência Tarefa Imediata da Diretiva de Grupo não é executado em um computador cliente que esteja executando o Windows 7 ou Windows Server 2008 R2
Veja a
Settings
guia da tarefa agendada e a opção listada comoStop the task if it runs longer than:
. Se essa opção estiver marcada e o período for menor que um script em execução, o Agendador de Tarefas eliminará a tarefa mais cedo e, portanto, você poderá não obter os resultados esperados. Isso é outra coisa a verificar ao solucionar problemas apenas por precaução.Na
Triggers
guia da tarefa agendada, quando você seleciona aEdit
opção, certifique-se de definir aStart:
hora e a data de um valor que NÃO já foi passado. Certifique-se de que essa data e hora estejam definidas como as de um valor no futuro . Caso contrário, você poderá perceber que o trabalho indica que está programado para ser executado no próximo horário agendado, conforme o esperado; no entanto, ele não é executado pelo Agendador de tarefas nem a guia Agendador de tarefasHistory
mostra que ele é executado (porque não é). Simplesmente edite o gatilho e atualize-o com uma data e / ou hora futura para resolver esse problema, se você estiver enfrentando.Telas de impressão
Imprimir tela A
Print Screen B
Print Screen C
fonte