Exécuter un fichier de commandes avec le planificateur de tâches Windows


155

J'ai un fichier batch daily.bat, voici le code:

cd C:\inetpub\wwwroot\infoweb\factuur\cron
c:\PHP\php.exe -f ./cron_pdf.php
ftp -s:ftp_upload.txt ftp.site.be

Et j'ai créé une tâche avec le planificateur de tâches dans Windows 7. Lorsque j'exécute le lot manuellement, tout se passe bien, mais lorsque j'essaye de l'exécuter avec le planificateur de tâches, rien ne se passe.

Mon action est

'run script' "C:\inetpub\wwwroot\site\x\cron\daily.bat"

L'UAC est désactivé et je suis Admin.

Une idée pourquoi cela ne fonctionne pas?


Je ne sais pas si cette question est hors sujet, mais vous pourriez obtenir de meilleures réponses sur serverfault.com pour cela.
Hans Olsson

Merci, je vais aussi essayer de le poster sur serverfault
Ruben

cela peut aussi être utile: serverfault.com/questions/734035/…
Ruben

Réponses:


286

J'ai rencontré le même problème, mais j'ai trouvé une autre solution sans avoir à modifier mon script batch.

La seule chose que j'ai ratée est les paramètres "Action" - option "Démarrer dans (facultatif)".

Allez dans les propriétés de la tâche -> onglet Action -> Modifier -> Remplissez comme ci-dessous:

  1. Action : démarrer un programme
  2. Programme / script : chemin vers votre script batch par exempleC:\Users\beruk\bodo.bat
  3. Ajouter des arguments (facultatif) : <si nécessaire - en fonction de votre script>
  4. Démarrer dans (facultatif) : indiquez le chemin d'accès complet à l'emplacement de votre script de commandes, par exemple C:\Users\beruk\(ne mettez pas de guillemets autour de Démarrer dans)

Cliquez ensuite sur OK

Ça marche pour moi. Bonne chance!


8
Je sais que le message original est assez ancien. Mais cet article figurait parmi les principaux liens de la recherche Google lorsque j'essayais la réponse à ce problème. Je pense donc que j'aimerais partager les résultats. Juste au cas où quelqu'un, y compris moi-même, oublierait cela.
Ghazi

4
Je ne pense pas que vous ayez réellement besoin de la valeur «Démarrer dans (facultatif)» - je suis capable d'exécuter un fichier .bat simple et autonome sans elle. Merci pour les étapes claires - très utiles pour ceux qui recherchent une promenade simple!
DCaugs

23
@DCaugs, Sans le Start Injeu de paramètres, mon fichier de commandes programmé ne fonctionnerait pas du tout. (Windows 7)
Justin Skiles

2
Cette solution n'a pas fonctionné pour moi. La réponse fournie par @Arun Raja a bien fonctionné.
Cagy79

7
@DCaugs C'est Start inla principale raison pour laquelle cela a fonctionné pour moi.
Gustavo

54

Aucune des méthodes ci-dessus n'a fonctionné. Je l'ai essayé de cette façon, comme dit dans un tutoriel et cela a fonctionné.

Action:

Start a program 

Programme / script:

cmd

Ajouter des arguments:

/c start "" "E:\Django-1.4.1\setup.bat"

A travaillé pour moi sur Win7 Pro. Vous devez avoir un compte avec un mot de passe (les mots de passe vides ne sont pas bons)


1
Je suis d'accord! aucune des solutions précédentes n'a fonctionné pour moi sur un serveur Windows 2008. Cette réponse a fait l'affaire pour moi! Merci.
Cagy79

J'aimerais pouvoir vous donner un +2000. J'ai essayé différentes approches tout au long de la journée et rien n'a bien fonctionné à part votre solution. J'ai dû lancer un fichier batch qui à son tour lance un autre fichier batch 10 fois avec des paramètres différents. Depuis la console, tout a bien fonctionné mais le planificateur de tâches a refusé d'ouvrir plus de 4 processus en même temps. C'était bizarre ... Avec votre technique, tous les 10 processus ont été lancés.
Icarus

Cette méthode a fonctionné pour moi. Mais, dans le planificateur, dans l'onglet historique, la tâche se termine immédiatement avec succès, puisque la tâche est le cmd, mais pas le fichier .bat qu'elle lance. Puisque le fichier bat, une opération de sauvegarde, se termine dans 2-3 heures, je n'ai aucune idée de son statut.
azzurroverde

Vous devez conserver une notification par courrier électronique à la fin de l'achèvement du fichier chauve-souris pour notifier son statut. c'est une façon.
Arun Raja

Cela a fonctionné, en conjonction avec le conseil qu'il devrait être configuré pour s'exécuter dans un répertoire spécifié comme mentionné dans la réponse acceptée de @ Ghazi, en s'assurant que "exécuter avec les privilèges les plus élevés" est également sélectionné.
mheavers

43

Pour ceux dont les fichiers chauve-souris ne fonctionnent toujours pas dans le planificateur de tâches Windows 8+, une chose que je voudrais ajouter à la réponse de Ghazi - après beaucoup de souffrance:

1) Sous Actions, choisissez "Créer une tâche de BASE " et non "Créer une tâche"

Cela l'a fait pour moi, ainsi que les autres problèmes à ne pas oublier:

  1. Utilisez le chemin Démarrer dans votre fichier de commandes, même s'il est facultatif
  2. utilisez des guillemets, si vous en avez besoin, dans votre entrée Démarrer un programme> programme / script, c'est-à-dire "C: \ mes scripts \ runme.bat" ...
  3. MAIS N'utilisez PAS de guillemets dans votre champ Début dans. (Fou mais vrai!)

Cela a fonctionné sans qu'il soit nécessaire de déclencher une invite de commande.

(Désolé, mon représentant est trop faible pour ajouter mon conseil de tâche de base aux commentaires de Ghazi)



7

Il fonctionne maintenant. C'est ce que j'ai fait. Vous n'aurez probablement pas besoin de toutes ces étapes pour le faire fonctionner, mais pour être sûr de les essayer toutes:

  • Vérifiez les paramètres de compte de votre tâche planifiée et assurez-vous qu'ils sont configurés pour s'exécuter, que quelqu'un soit connecté ou non à la machine

  • vérifier exécuter avec la plupart des privilèges / droits

  • Assurez-vous d'abord d'accéder au chemin complet: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • N'utilisez pas de guillemets doubles dans vos fichiers batch (je ne sais pas pourquoi mais cela semble aider)

  • Soyez super administrateur, entrez `` Administrateur utilisateur réseau / actif: oui '' dans l'invite de commande, déconnectez-vous et connectez-vous en tant que super-administrateur, donc l'UAC est désactivé


2
Désolé de le dire, mais c'est une réponse très mal écrite. Je m'assurerais que la bonne réponse est sélectionnée comme réponse acceptée.
jwize

5

Assurez-vous que «Start In» ne se termine PAS par un BACKSLASH.


1
Pourriez-vous clarifier la version du système d'exploitation ou le type de tâche ou tout ce à quoi ces informations s'appliquent? La réponse acceptée inclut un \ donc cela doit fonctionner sur certains systèmes - où cela ne fonctionne-t-il pas?
lessthanideal

Cela a corrigé une tâche planifiée «foo.cmd» pour moi sur Windows Server 2012. Avec «Démarrer dans» défini sur «C: \ Foo», la tâche a échoué avec l'erreur de code de sortie 0x8007001, mais avec «Démarrer dans» défini sur «C : \ Foo 'la tâche s'est bien déroulée.
Aaron

5

J'ai eu un problème où ma tâche ne se déclenchait pas simplement parce qu'elle fonctionnait sur un ordinateur portable sans cordon d'alimentation ... Sous l'onglet conditions, par défaut, elle est cochée afin qu'une tâche ne s'exécute pas tant que l'alimentation secteur n'est pas connectée.


3

Sous Windows7 Pro, j'ai trouvé que la solution d'Arun fonctionnait pour moi: je pouvais faire fonctionner cela même avec "aucun utilisateur connecté", j'ai choisi d'utiliser les privilèges les plus élevés.

D'après l'expérience passée, vous devez avoir un compte avec un mot de passe (les mots de passe vides ne sont pas bons), et si le programme ne vous demande pas le mot de passe lorsque vous avez terminé l'assistant, revenez et modifiez quelque chose jusqu'à ce qu'il le fasse!

C'est la méthode au cas où ce ne serait pas clair qui a fonctionné

Action: start a program
Program/script : cmd
      (doesn't need the .exe bit!)
Add arguments:
    /c start "" "E:\Django-1.4.1\setup.bat" 

3

J'ai joué avec cela pendant plusieurs heures et j'ai essayé de nombreuses suggestions différentes.

Je l'ai finalement fait fonctionner en procédant comme suit:

Action: démarrer un programme

Programme / Script: C: \ scriptdir \ script.bat

Ajouter des arguments (facultatif) script.bat

Commencez dans (facultatif): c: \ scriptdir

exécuter uniquement lorsque l'utilisateur est connecté

courir avec les privilèges les plus élevés

configurer pour: Windows Vista, Windows Server 2008


2

Si tout le reste échoue pour vous ici, assurez-vous que l'utilisateur que vous essayez d'exécuter la tâche a accès au fichier que vous essayez d'utiliser.

Dans mon cas, j'essayais d'exécuter un fichier de commandes à partir de C: \ Users \ Administrator \ Desktop auquel le compte ne pouvait pas accéder. Le déplacer vers un emplacement neutre sur C: \ a résolu le problème.


1

Veuillez vérifier quel compte utilisateur vous utilisez pour exécuter notre tâche. Il se peut que vous exécutiez votre tâche avec un utilisateur différent de votre utilisateur par défaut, et cet utilisateur nécessite des privilèges supplémentaires. Il peut également arriver que la tâche soit exécutée mais que vous ne puissiez voir aucun effet car le fichier de commandes attend une réponse de l'utilisateur, veuillez donc vérifier le gestionnaire de tâches si vous voyez votre processus en cours d'exécution. Une fois qu'il arrive que je programme un lot avec svn update d'une page Web et que le processus se bloque parce que svn a demandé d'accepter le certificat de serveur.


1
  1. N'utilisez pas de guillemets doubles dans votre fichier cmd / batch
  2. Assurez-vous d'aller au début du chemin complet dans (facultatif) :
    C: \ Necessaire_file \ Reqular_task \ QDE \ cmd_practice \

entrez la description de l'image ici


1

Je poste la réponse à cette question ici et ici .

entrez la description de l'image ici


Tant que vous êtes sûr que l'autre réponse est correcte, vous pouvez marquer la question comme dupliquée.
Badro Niaimi

0

L'utilisation du bouton Exécuter dans la fenêtre principale du Planificateur de tâches pour tester plusieurs variantes a finalement trouvé les paramètres corrects. Ces deux options doivent être combinées: -Exécuter uniquement lorsque l'utilisateur est connecté -Exécuter avec les privilèges les plus élevés. Toutes les autres variantes ont échoué. C'est exaspérant tout le temps perdu là-dessus, mais au moins ça marche. OS: VERSION WINDOWS 8 CORE (BASIC)


0

Essayez d'exécuter la tâche avec des privilèges élevés.

mettre un \ à la fin du chemin dans "démarrer dans le dossier" tel que c: \ temp \

Je ne sais pas pourquoi, mais cela fonctionne parfois pour moi.


0

Action: Start a Program

Programme / script: C:\Windows\System32\cmd.exe

Ajouter des arguments: /k start "" "E:\scripts\example.bat"

Ajouter exit à la fin de votre fichier batch.

La fenêtre cmd ne s'affichera pas si vous sélectionnez Run whether user is logged in or not. Vous devez sélectionner Run only when user is logged onpour voir la fenêtre en action.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.