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

11

J'utilise Windows Server 2003 et j'ai une tâche planifiée qui ne se termine pas. 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 certaines données d'une base de données SQL Server et télécharge ces données 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 qui indique: Le code d'erreur "C" le plus courant est "0xC000013A: l'application s'est terminée à la suite d'un CTRL + C".

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

J'ai vérifié les choses 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 (soit en exécutant le script .cmd à partir de la ligne de commande, soit en cliquant avec le bouton droit sur la tâche 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 la forcer?

Brian Willis
la source
Essayez d'ajouter un code de sortie au script de fin par vous-même (par exemple exit 0). S'il échoue toujours, il échoue par lui-même. Sinon, il s'agissait simplement d'un faux code de sortie mal interprété par le planificateur de tâches.
bjoster

Réponses:

6

Dépannage des scripts planifiés:

  1. Si vous ne l'avez pas déjà fait, consultez le fichier journal des tâches planifiées , dans l'interface graphique sous Avancé > Afficher le journal . Recherchez le fichier " ***" pour trouver les entrées les plus récentes, et vous pouvez voir quelques informations d'erreur supplémentaires.

  2. Définissez un fichier journal pour capturer la sortie et envoyez à la fois la sortie standard et l'erreur standard. Modifiez l' un écho OFF à écho sur pour être sûr que vous n'êtes pas des messages d'supprimant erreur.
    Par exemple, si votre script est appelé, ftp.data.cmdvotre tâche planifiée pourrait ressembler à ceci,

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

  3. Le script est-il suspendu? Peut-être que le planificateur de tâches tue le script (d'où le code d'erreur CTRL + C) après une certaine période de temps. Ajoutez-en quelques-uns aux points stratégiques de votre scipt,

    echo %DATE% %TIME%

  4. Êtes-vous sûr que le compte exécutant le script dispose d'autorisations / accès à tout dans le script?

  5. Si vous ne pouvez obtenir aucune joie, exécutez cette commande et publiez la sortie ici, nous pouvons peut-être commencer par la planification,

    schtasks /query /v /fo LIST /s YOURSERVER

nray
la source
4

Je ne peux pas répondre directement à la question car je ne sais pas précisément ce que signifie le message d'erreur (ni, par conséquent, comment y remédier), mais si j'essayais de le résoudre, j'ajouterais quelques écritures dans un fichier journal à l'adresse points stratégiques dans le script, puis après l'heure prévue, voyez 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 quelque chose dans le script a besoin d'un utilisateur connecté. Rétrécir où dans le script les choses échouent peut vous aider à trouver le code "incriminé".

cori
la source
2

Je me rends compte que c'est une ancienne publication, mais ils sont très utiles lors de la recherche de solutions et peut-être que ce que j'ai trouvé peut aussi être utile. 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 a indiqué qu'il n'y avait pas assez de temps dans la section "Arrêter la tâche si elle fournissait:" même si j'ai donné la tâche beaucoup de temps pour télécharger.

En regardant dans le Gestionnaire des tâches, je pouvais voir que WinSCP.exe ne s'effaçait pas et j'avais des tonnes de processus dans la liste, j'ai donc créé un fichier de commandes (taskkill / f / im winscp.exe) pour tuer tout processus ouvert et j'ai exécutez ce fichier batch avant le WinSCP et cela fonctionne bien maintenant.

susand
la source
2

J'ai rencontré cela aujourd'hui sur un serveur distant, et la solution a été de changer le paramètre d'exécution de "Exécuter uniquement lorsque l'utilisateur est connecté" à "Exécuter, que l'utilisateur soit 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 ma session de bureau à distance a expiré. Avec "Exécuter, que l'utilisateur soit connecté ou non", aucune fenêtre ne s'affiche pendant l'exécution de la tâche, donc l'exécution ne s'arrête pas à la fin de ma session de bureau à distance.

VolleyJosh
la source
1

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

Glenn Slaven
la source
1

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

Ted Taylor
la source
1

J'ai eu la même erreur et c'était parce que le fichier de commandes que j'exécutais demandait que certains fichiers soient supprimés avec la commande DEL. Comme il n'y a aucun utilisateur pour répondre O / N au 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é lancée soit par un administrateur soit par le service Planificateur de tâches (car, par exemple, l'ordinateur n'est plus inactif)". Ma recommandation est d'exécuter la tâche manuellement à partir de l'invite de commande pour voir où elle s'arrête ou invite à une interaction utilisateur, corrigez-la et votre tâche s'exécutera correctement.

Ruddwall
la source
1

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 où se trouve 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.

roadkill42
la source
0

À mes scripts, cela est clair. Cela se produit car j'ai une "pause" à la fin du fichier de commandes et la tâche planifiée est limitée à 20 minutes. Lorsque l'utilisateur est présent, hi peut voir le déroulement du travail. Lorsque le fichier batch n'est pas terminé par une tâche planifiée, après 20 min. Cela provoque 0xc000013a et c'est ok.

Danko
la source
0

J'ai eu le même problème et l'ai résolu en changeant le déclencheur de "Au démarrage du système" en "À l'ouverture de session".

Andrei G
la source
0

eu le même problème .. résolu en jouant avec l'utilisateur qui est enregistré pour exécuter la tâche planifiée. à la fin, changer de domaine était la réponse.

tal
la source