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?

Ruben
la source
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!

Ghazi
la source
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)

Arun Raja
la source
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)

micstr
la source
21

Assurez-vous que "Start In" n'a pas de devis.

Jonathan
la source
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é

Ruben
la source
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.

Michael Kehoe
la source
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.

Chriz
la source
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" 
Bruce Metelerkamp
la source
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

Robb
la source
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.

Vince
la source
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.

user6039542
la source
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

Shahidul Islam Molla
la source
1

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

entrez la description de l'image ici

VersCarbajal
la source
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)

sapitron
la source
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.

C Jee
la source
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.

Ethan Allen
la source