Estou usando o Windows Server 2003 e tenho uma tarefa agendada que falha ao concluir. A tarefa está definida para executar um Script de Comando do Windows (.cmd) às 15h todos os dias. O script executa um programa que extrai alguns dados de um banco de dados do SQL Server e carrega esses dados em um servidor FTP.
O código de erro exibido na coluna "Último resultado" da pasta de tarefas agendadas é 0xc000013a. Uma rápida pesquisa no Google leva a esta página de suporte da Microsoft que declara: O código de erro "C" mais comum é "0xC000013A: O aplicativo foi encerrado como resultado de um CTRL + C".
Ninguém está logado no momento em que a tarefa é executada; portanto, não há ninguém por perto para pressionar CTRL + C. Não sei se entendi o que está sendo dito aqui na documentação da Microsoft.
Eu verifiquei as coisas rudimentares - a tarefa agendada está ativada, agendada para ser executada todos os dias e apontando para um arquivo que existe em um local válido. Curiosamente, quando eu executo essa tarefa manualmente (executando o script .cmd na linha de comando ou clicando com o botão direito do mouse na tarefa e clicando em "Executar"), a tarefa é concluída com êxito.
O que esse código de erro significa e como posso executar esta tarefa quando não estou lá para forçá-la?
fonte
exit 0
). Se ainda falhar, está falhando por si só. Caso contrário, era apenas um código de saída falso, mal interpretado pelo agendador de tarefas.Respostas:
Solucionando problemas de scripts agendados:
Se você ainda não o fez, verifique o arquivo de log de Tarefas agendadas , na GUI em Avançado > Exibir log . Pesquise no arquivo "
***
" para encontrar as entradas mais recentes e você poderá ver algumas informações adicionais sobre erros.Defina um arquivo de log para capturar a saída e envie erro e saída padrão. Altere qualquer eco OFF para echo ON para garantir que você não esteja suprimindo nenhuma mensagem de erro.
Por exemplo, se seu script for chamado
ftp.data.cmd
, sua tarefa agendada poderá ser assim,cmd /c ftp.data.cmd >> ftp.data.log 2>&1
O script está suspenso? Talvez o agendador de tarefas esteja matando o script (daí o código de erro CTRL + C) após um período especificado. Adicione alguns deles em pontos estratégicos do seu scipt,
echo %DATE% %TIME%
Tem certeza de que a conta que está executando o script tem permissões / acesso a tudo no script?
Se você não tiver alegria, execute este comando e poste a saída aqui, talvez possamos começar com o agendamento,
schtasks /query /v /fo LIST /s YOURSERVER
fonte
Não consigo responder à pergunta diretamente, pois não sei especificamente o que significa a mensagem de erro (nem, portanto, como corrigi-la), mas se estivesse tentando solucionar o problema, adicionaria algumas gravações a um arquivo de log em pontos estratégicos no script e, depois do horário agendado, veja qual é o último ponto de verificação a ser executado.
Minha suspeita seria que há algo que está falhando devido às credenciais sob as quais o script está sendo executado ou que algo no script precisa de um usuário conectado. Estreitar onde as coisas falham no script pode ajudar a encontrar o código "ofensivo".
fonte
Sei que essa é uma postagem antiga, mas eles são muito úteis na busca de soluções e talvez o que eu encontrei também possa ser útil. Eu estava usando o WinSCP no Windows Server 2003 para carregar em um servidor ftp e recebi a mesma mensagem de erro e o arquivo SchedLgU.txt apontou para o tempo insuficiente na seção "Interrompa a tarefa se fornecer:", mesmo que eu tenha fornecido a tarefa muito tempo para fazer o upload.
Olhando no Gerenciador de Tarefas, pude ver que o WinSCP.exe não estava sendo limpo e eu tinha vários processos na lista, então criei um arquivo em lotes (taskkill / f / im winscp.exe) para matar qualquer processo aberto e eu faça com que esse arquivo em lotes seja executado antes do WinSCP e funcione bem agora.
fonte
Encontrei isso hoje em um servidor remoto, e a solução foi alterar a configuração de execução de "Executar apenas quando o usuário estiver conectado" para "Executar se o usuário estiver conectado ou não".
Com "Executar apenas quando o usuário estiver conectado", a tarefa inicia uma janela de comando que foi fechada quando o tempo limite da minha sessão de área de trabalho remota expirou. Com "Executar se o usuário está logado ou não", nenhuma janela é exibida enquanto a tarefa é executada; portanto, a execução não para quando minha sessão da área de trabalho remota termina.
fonte
Semelhante à resposta da cori, recomendo que você verifique com quem a tarefa agendada está definida para execução, pois vi esse erro ocorrer quando a conta de usuário que está executando a tarefa não tem as mesmas permissões que o usuário conectado
fonte
Se isso foi executado antes, talvez uma condição como uma interrupção na rede ou um problema em outro host possa explicar a falha.
fonte
Eu tive o mesmo erro e foi porque o arquivo em lotes que eu estava executando solicitava a exclusão de alguns arquivos com o comando DEL. Como não há usuário para responder S / N ao processo em lote, a tarefa agendada é encerrada. A seguinte é a mensagem que encontrei no meu log de tarefas agendadas: "a tarefa foi encerrada. Esta ação foi iniciada por um administrador ou pelo serviço Agendador de Tarefas (porque, por exemplo, o computador agora não está ocioso)". Minha recomendação é executar a tarefa manualmente no prompt de comando para ver onde está parando ou solicitando alguma interação do usuário, corrigi-la e sua tarefa será executada corretamente.
fonte
Se você estiver tentando executar o programa sob o controle do Agendador de Tarefas, o System.Environment.CurrentDirectory retornará C: \ Windows \ System32, NÃO onde o seu executável está localizado. Este erro pode ser um erro de arquivo não encontrado; Eu estava tentando fazer logon em um subdiretório e ele não existia na árvore System32.
fonte
Nos meus scripts, isso é claro. Isso acontece porque eu tenho "pausa" no final do arquivo em lotes e a tarefa agendada é limitada a 20 minutos. Quando o usuário está presente, oi pode ver o fluxo do trabalho. Quando o arquivo em lote não é finalizado pela tarefa agendada, após 20 min. Isso está causando 0xc000013a e está ok.
fonte
Eu tive o mesmo problema e o corrigi, alterando o gatilho de "Na inicialização do sistema" para "No logon".
fonte
teve o mesmo problema .. corrigido jogando com o usuário registrado para executar a tarefa agendada. no final, mudar o domínio foi a resposta.
fonte