Question La tâche planifiée Windows ne se termine pas avec le code d'erreur 0xc000013a


J'utilise Windows Server 2003 et une tâche planifiée échoue. La tâche est configurée pour exécuter un script de commande Windows (.cmd) à 15 heures chaque jour. Le script exécute un programme qui extrait des données d'une base de données SQL Server et les télécharge sur un serveur FTP.

Le code d'erreur affiché dans la colonne "Dernier résultat" du dossier des tâches planifiées est 0xc000013a. Une recherche rapide sur Google mène à cette page de support Microsoft Le code d'erreur "C" le plus courant est "0xC000013A: l'application s'est terminée suite à une combinaison de touches CTRL + C".

Personne n'est connecté au moment de l'exécution de la tâche. Par conséquent, personne ne peut appuyer sur CTRL + C. Je ne suis pas sûr de comprendre ce qui est dit ici dans la documentation de Microsoft.

J'ai vérifié les éléments rudimentaires - la tâche planifiée est activée, planifiée pour s'exécuter chaque jour et pointant vers un fichier qui existe dans un emplacement valide. Fait intéressant, lorsque j'exécute cette tâche manuellement (en exécutant le script .cmd à partir de la ligne de commande ou en cliquant avec le bouton droit de la souris et en cliquant sur "Exécuter"), la tâche se termine avec succès.

Que signifie ce code d'erreur et comment puis-je exécuter cette tâche lorsque je ne suis pas là pour le forcer?


10
2018-05-13 04:08


origine


Essayez d’ajouter vous-même un code de sortie au script de fin (par exemple, exit 0). Si cela échoue toujours, il échoue tout seul. Sinon, il s'agissait simplement d'un faux code de sortie mal interprété par le planificateur de tâches. - bjoster


Réponses:


Dépannage des scripts planifiés:

  1. Si vous ne l'avez pas déjà fait, consultez la Tâches planifiées fichier journal, dans l'interface graphique sous Avancée > Voir le journal. Rechercher dans le fichier pour "***"pour trouver les entrées les plus récentes, et vous pouvez voir une petite info supplémentaire sur l’erreur.

  2. Définissez un fichier journal pour capturer la sortie et envoyez-y l'erreur standard et l'erreur standard. Changer tout Écho off à echo ON pour être sûr que vous ne supprimez aucun message d'erreur.
    Par exemple, si votre script s'appelle ftp.data.cmd alors votre tâche planifiée pourrait ressembler à ceci,

    cmd /c ftp.data.cmd >> ftp.data.log 2>&1 

  3. Le script est-il en suspens? Peut-être que le planificateur de tâches supprime le script (d'où le code d'erreur CTRL + C) après une période spécifiée. Ajoutez-en certains à des points stratégiques de votre scipt,

    echo %DATE% %TIME% 

  4. Etes-vous sûr que le compte qui exécute le script dispose des autorisations / accès à tout ce qu'il contient?

  5. Si vous ne pouvez pas obtenir de joie, exécutez cette commande et affichez le résultat ici, peut-être pourrions-nous commencer par la planification,

    schtasks /query /v /fo LIST /s YOURSERVER 


6
2018-06-16 14:55





Je ne peux pas répondre directement à la question car je ne sais pas précisément ce que le message d'erreur signifie (ni, par conséquent, comment le résoudre), mais si j'essayais de le résoudre, j'ajouterais quelques écritures dans un fichier journal à points stratégiques dans le script, puis, après l’heure prévue, voir quel est le dernier point de contrôle à exécuter.

Je soupçonne qu'il y a quelque chose qui échoue en raison des informations d'identification sous lesquelles le script s'exécute ou qu'un élément du script nécessite un utilisateur connecté. Réduire les points d'échec dans le script peut vous aider à trouver le code "fautif".


4
2018-05-13 05:02





Je me rends compte qu’il s’agit d’une publication ancienne, mais ils sont très utiles lors de la recherche de solutions et peut-être que ce que j’ai trouvé peut l’être également. J'utilisais WinSCP sur Windows Server 2003 pour télécharger sur un serveur FTP et j'ai reçu le même message d'erreur et le fichier SchedLgU.txt indiquait que le temps était trop court dans la section "Arrêtez la tâche si elle est pour:" alors que j'ai donné la tâche. beaucoup de temps pour télécharger.

En regardant dans le Gestionnaire des tâches, j'ai constaté que WinSCP.exe n'effaçait pas et que la liste contenait des tonnes de processus, j'ai donc créé un fichier de traitement par lots (taskkill / f / im winscp.exe) pour supprimer tout processus ouvert. avoir ce fichier batch exécuté avant le WinSCP et cela fonctionne bien maintenant.


2
2018-02-02 22:08





Semblable à la réponse de cori, je vous recommanderais de vérifier sur qui la tâche planifiée est configurée pour s'exécuter, car j'ai vu cette erreur se produire lorsque le compte d'utilisateur qui l'exécute n'a pas les mêmes autorisations que l'utilisateur connecté.


1
2018-05-13 05:07





Si cela se produisait auparavant, une condition telle qu'une panne de réseau ou un problème sur un autre hôte peut expliquer l'échec.


1
2017-08-02 03:27





J'ai eu la même erreur et c'est parce que le fichier de commandes que j'exécutais invitait certains fichiers à supprimer avec la commande DEL. Comme il n’existe aucun utilisateur pour répondre à O / N lors du traitement par lots, la tâche planifiée est terminée. Voici le message que j'ai trouvé dans mon journal des tâches planifiées: "la tâche a été terminée. Cette action a été initiée par un administrateur ou par le service Planificateur de tâches (car, par exemple, l'ordinateur n'est plus en veille)." Ma recommandation est d'exécuter la tâche manuellement à partir de l'invite de commande pour voir où elle s'arrête ou pour demander une interaction de l'utilisateur, corrigez-la et votre tâche s'exécutera correctement.


1
2018-06-19 14:23





Si vous essayez d'exécuter le programme sous le contrôle du planificateur de tâches, System.Environment.CurrentDirectory renverra C: \ Windows \ System32, PAS l'emplacement de votre exécutable. Cette erreur peut être une erreur de fichier introuvable. J'essayais de me connecter à un sous-répertoire et il n'existait pas dans l'arborescence System32.


1
2018-05-27 18:29





Je l'ai rencontré aujourd'hui sur un serveur distant et la solution consistait à modifier le paramètre d'exécution de "Exécuter uniquement lorsque l'utilisateur est connecté" à "Exécuter si l'utilisateur est connecté ou non".

Avec "Exécuter uniquement lorsque l'utilisateur est connecté", la tâche lance une fenêtre de commande qui a été fermée lorsque la session de mon poste de travail distant a expiré. Avec "Exécuter si l'utilisateur est connecté ou non", aucune fenêtre ne s'affiche pendant l'exécution de la tâche. L'exécution ne s'arrête donc pas à la fin de ma session de bureau à distance.


1
2018-03-06 16:23