web-dev-qa-db-fra.com

Le Planificateur de tâches Windows ne démarre pas la tâche de fichier de traitement par lots

J'ai un fichier de commandes avec le code ci-dessous pour arrêter et démarrer le service SQL Report:

net stop "SQL Server Reporting Services (MSSQLSERVER)" 

timeout /t 10

net start "SQL Server Reporting Services (MSSQLSERVER)"

J'ai configuré la tâche planifiée pour une exécution quotidienne. Elle s'exécute actuellement en tant que SYSTÈME avec les privilèges les plus élevés. J'ai configuré l'option Démarrer dans le dossier de l'action et tout semble en général être configuré correctement. Mais lorsque j'exécute la tâche, rien ne semble se produire. La tâche a été exécutée, mais je ne vois pas que le service a été redémarré comme prévu.

Quelqu'un peut-il me diriger vers ce qui me manque? Merci

24
jimminybob

Assurez-vous de définir correctement les options 'Démarrer dans' et 'Programme/script' . Si votre adresse de fichier est: C:\Temp\foo.bat, définissez l'option "démarrer dans" sur "C:\Temp" et l'option "Programme/script" sur "foo.bat".

Pour définir l'option 'Démarrer dans': Cliquez avec le bouton droit de la souris sur le planificateur de tâches > Properties > Actions > Edit.

Si cela seul ne fonctionne pas, essayez de déplacer le fichier .bat dans un répertoire avec les autorisations de base (peut-être un répertoire partagé, par exemple).

J'ai eu un problème lorsque mon fichier .bat se trouvait dans un dossier avec des autorisations restrictives, de sorte que seul mon compte d'utilisateur puisse y accéder. Même si j'avais configuré le planificateur de tâches pour utiliser mes informations d'identification, cela a quand même échoué. Déplacez le fichier .bat vers un autre répertoire pour résoudre le problème.

65
ninjaPixel

Beaucoup de temps perdu sur cette question stupide!

ajoutez une commande cd à l'emplacement de votre fichier de commandes sur la première ligne de votre fichier de commandes et vérifiez si le problème est résolu.

cd D:\wherever\yourBatch\fileIs

CONSEIL: veuillez utiliser des chemins absolus, les chemins relatifs ne devraient pas être un problème, mais le planificateur a du mal à les comprendre.

11
MoMo

J'ai eu le même problème. Je crois que c'est un problème de privilège. Si vous avez sélectionné "Exécuter uniquement lorsque l'utilisateur est connecté", cela ne se produira pas.

J'espère que vous l'aurez compris, mais je voulais l'enregistrer ici pour la prochaine personne qui a perdu des heures à ce sujet.

5
Suhaib Ahmed

C'est un joli vieux fil, mais le problème est toujours le même -

J'ai essayé plusieurs choses, aucune d'entre elles n'a fonctionné - 

  1. Ajout d'un chemin de départ dans le chemin (sans guillemets)
  2. Suppression du chemin complet du fichier de commandes dans le champ Programme/Script , Etc.
  3. Ajout de C:\Windows\system32\cmd.exe au programme et de /c myscript.bat au champ arguments.

C'est ce qui a fonctionné pour moi -

Champ Programme/Script - cmd

Ajouter des arguments -/c myscript.bat

Démarrer dans: chemin vers myscript.bat

4
smitraa

Définir 'Programme/script' -> fichier.bat Set 'Démarrer dans' le reste du chemin (fichier.bat)

2
widoz

Si vous aviez le même problème, assurez-vous de cocher "Exécuter uniquement lorsque l'utilisateur est connecté", du moins c'est ce qui a redonné vie à mon fichier bat. 

2
Gabo

Mon application n'a pas pu démarrer via "Planificateur de tâches".

L'erreur dans "Observateur d'événements" est la suivante: System.IO.DirectoryNotFoundException

Le "Planificateur de tâches" tente d'exécuter cette application avec l'utilisateur "SYSTEM". Le problème était qu'un "lecteur réseau" n'était pas mappé pour l'utilisateur "SYSTEM". J'ai donc créé un fichier ".bat" et mappé le "lecteur réseau" avant de lancer l'application:

Net Use T: \\172.20.2.215\images
cd C:\MyApplication
start MyApplication.exe

Vérifiez donc d'abord vos journaux: "Observateur d'événements" -> Journaux Windows -> Application

1
Tadej

La solution consiste à décocher (désactiver) l'option "Exécuter uniquement si l'utilisateur est connecté".

Après ce changement, cela commence à fonctionner sur ma machine.

1
Ljuba

Essayez le code ci-dessous:

Batchfile.bat:

cd c:\batchfilepath
net stop "SQL Server Reporting Services (MSSQLSERVER)" 
timeout /t 10
net start "SQL Server Reporting Services (MSSQLSERVER)"
1
aditya garg

J'ai eu le même problème et aucune des solutions n'a fonctionné. Lorsque j'ai vérifié l'historique, j'ai compris le problème. J'ai eu cet avertissement

Task Scheduler did not launch task "\TASK_NAME"  because instance "{34a206d4-7fce-3895-bfcd-2456f6ed6533}"  of the same task is already running.

L'onglet Paramètres contient une option déroulante pour "Si la tâche est déjà en cours d'exécution, la règle suivante s'applique:" et la valeur par défaut est "Ne pas démarrer une nouvelle instance". Modifiez cela en "Exécuter une nouvelle instance en parallèle" ou "Arrêter l'instance existante" en fonction de ce que vous devez réellement faire. 

Je sais que c’est un vieux fil et que les solutions multiples sont bonnes, c’est ce qui a bien fonctionné pour moi. J'espère que ça aide. 

1
octafbr

Pour moi, le problème était causé par le .bat qui incluait une cd sur un lecteur réseau. Cela a échoué, puis l'appel ultérieur du programme dans ce lecteur réseau n'a rien fait.

J'ai compris cela en ajoutant > log.txt dans le champ Ajouter des arguments de l'action Edit window pour la tâche.

1
Gregorio

Une solution consiste à exécuter votre fichier '.bat' avec '.vbs' et à exécuter ce fichier vbs dans windows scheduler

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("cron_jobs.bat"), 0, True

Vous pouvez faire comme ceci et j'espère que cela résoudra votre problème.

1
sherin.k

Mon problème a été causé par OneDrive. OneDrive synchronisait le dossier dans lequel vivait mon fichier de commandes, ce qui semble empêcher son exécution par le Planificateur de tâches. (Quelqu'un chez MS n'a-t-il pas testé ce genre de chose?)

Quoi qu'il en soit, en déplaçant mon fichier de commandes dans un dossier qui n'était pas dans OneDrive, le fichier de commandes pouvait être démarré par le Planificateur de tâches.

0
Matthew

Sur un système Windows prenant en charge runas. Tout d’abord, lancez votre programme indépendamment en le lançant à partir d’une ligne de commande exécutée sous cet utilisateur, comme suit: 

runas /user:<domain\username> cmd

Ensuite, dans cette nouvelle ligne de commande, cd indique le chemin à partir duquel vous souhaitez que le programme de lancement de tâches lance votre programme et saisisse tous les arguments, par exemple. 

cd D:\Scripts\, puis exécutez 

C:\python27\pthon.exe script.py 

Toutes les erreurs supprimées par le planificateur de tâches doivent apparaître dans la sortie en ligne de commande et faciliteront le débogage. 

0
madballoonist

Pour moi, c'était un problème déclencheur. Par défaut, On a Schedule devrait figurer dans l'onglet de déclenchement. J'avais sélectionné At log on et j'attendais alors d'exécuter la tâche. Comme son nom l'indique lors de la connexion, cela signifie que vous devez vous déconnecter et vous connecter. 

Essayez de le mettre sur un calendrier et le feu à chaque minute. 

 enter image description here

0
shyammakwana.me