Führen Sie eine Batchdatei mit dem Windows-Taskplaner aus


154

Ich habe eine Batch-Datei daily.bat, das ist der Code:

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

Und ich habe eine Aufgabe mit dem Taskplaner in Windows 7 erstellt. Wenn ich den Stapel manuell ausführe, funktioniert alles einwandfrei, aber wenn ich versuche, ihn mit dem Taskplaner auszuführen, passiert nichts.

Meine Aktion ist

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

Die Benutzerkontensteuerung ist ausgeschaltet und ich bin Administrator.

Irgendeine Idee, warum das nicht funktioniert?


Ich bin mir nicht sicher, ob diese Frage aktuell ist, aber Sie erhalten möglicherweise bessere Antworten auf serverfault.com .
Hans Olsson

Danke, ich werde auch versuchen, es auf Serverfault zu veröffentlichen
Ruben

Dies kann auch nützlich sein: serverfault.com/questions/734035/…
Ruben

Antworten:


285

Ich hatte das gleiche Problem, fand aber eine andere Lösung, ohne mein Batch-Skript ändern zu müssen.

Das einzige, was ich verpasst habe, sind die Einstellungen für "Aktion" - "Start in (optional)".

Gehen Sie zu den Aufgabeneigenschaften -> Registerkarte Aktion -> Bearbeiten -> Füllen Sie wie folgt aus:

  1. Aktion : Starten Sie ein Programm
  2. Programm / Skript : Pfad zu Ihrem Batch-Skript, zC:\Users\beruk\bodo.bat
  3. Fügen Sie Argumente hinzu (optional) : <falls erforderlich - abhängig von Ihrem Skript>
  4. Start in (optional) : Geben Sie den vollständigen Pfad zu Ihrem Batch-Skript-Speicherort ein, z. B. C:\Users\beruk\( Setzen Sie keine Anführungszeichen um Start In)

Klicken Sie dann auf OK

Für mich geht das. Viel Glück!


8
Mir ist bewusst, dass der ursprüngliche Beitrag ziemlich alt ist. Aber dieser Beitrag gehörte zu den Top-Links in der Google-Suche, als ich die Antwort auf dieses Problem versuchte. Ich denke, ich möchte die Ergebnisse teilen. Nur für den Fall, dass jemand, einschließlich mir, dies vergisst.
Ghazi

4
Ich glaube nicht, dass Sie tatsächlich den Wert 'Start in (optional)' benötigen - ich kann eine einfache, in sich geschlossene .bat-Datei ohne diesen Wert ausführen. Vielen Dank für die klaren Schritte - sehr hilfreich für diejenigen, die einen einfachen Spaziergang suchen!
DCaugs

23
@DCaugs, Ohne den Start InParametersatz würde meine geplante Batchdatei überhaupt nicht ausgeführt. (Windows 7)
Justin Skiles

2
Diese Lösung hat bei mir nicht funktioniert. Die Antwort von @Arun Raja hat gut funktioniert.
Cagy79

7
@DCaugs Das Start inist der Hauptgrund, warum es bei mir funktioniert hat.
Gustavo

54

Keine der oben genannten Methoden hat funktioniert. Ich habe es so versucht, wie es in einem Tutorial gesagt wurde, und es hat funktioniert.

Aktion:

Start a program 

Programm / Skript:

cmd

Argumente hinzufügen:

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

Arbeitete für mich auf Win7 Pro. Sie müssen ein Konto mit einem Passwort haben (leere Passwörter sind nicht gut)


1
Ich stimme zu! Keine der vorherigen Lösungen hat auf einem Windows Server 2008 für mich funktioniert. Diese Antwort hat den Trick für mich getan! Vielen Dank.
Cagy79

Ich wünschte, ich könnte dir +2000 geben. Ich habe den ganzen Tag verschiedene Ansätze ausprobiert und nichts hat gut funktioniert außer Ihrer Lösung. Ich musste eine Batch-Datei starten, die wiederum zehnmal eine andere Batch-Datei mit unterschiedlichen Parametern startet. Über die Konsole funktionierte alles einwandfrei, aber der Taskplaner weigerte sich, mehr als 4 Prozesse gleichzeitig zu öffnen. Es war komisch ... Mit Ihrer Technik wurden alle 10 Prozesse gestartet.
Ikarus

Diese Methode hat bei mir funktioniert. Im Scheduler auf der Registerkarte "Verlauf" wird die Aufgabe jedoch sofort mit Erfolg abgeschlossen, da es sich bei der Aufgabe um die cmd-Datei handelt, nicht jedoch um die .bat-Datei, die sie startet. Da die Bat-Datei, ein Sicherungsvorgang, in 2-3 Stunden endet, habe ich keine Ahnung von ihrem Status.
Azzurroverde

Sie müssen am Ende der Fertigstellung der Bat-Datei eine E-Mail-Benachrichtigung aufbewahren, um den Status zu benachrichtigen. das ist eine Möglichkeit.
Arun Raja

Dies funktionierte in Verbindung mit dem Tipp, dass es so eingestellt werden sollte, dass es in einem bestimmten Verzeichnis ausgeführt wird, wie in der von @ Ghazi akzeptierten Antwort erwähnt, und stellte sicher, dass auch "Mit den höchsten Berechtigungen ausführen" ausgewählt ist.
Mheavers

43

Für diejenigen, deren Fledermausdateien in Windows 8+ Task Scheduler immer noch nicht funktionieren , möchte ich eine Sache zu Ghazis Antwort hinzufügen - nach viel Leid:

1) Wählen Sie unter Aktionen " BASIC- Aufgabe erstellen " und nicht "Aufgabe erstellen".

Das hat es für mich getan, und die anderen Themen, die ich nicht vergessen sollte:

  1. Verwenden Sie den Start-In- Pfad zu Ihrer Batch-Datei, obwohl dort optional steht
  2. Verwenden Sie bei Bedarf Anführungszeichen in Ihrem Eintrag Programm starten> Programm / Skript, dh "C: \ my scripts \ runme.bat" ...
  3. ABER verwenden Sie keine Anführungszeichen in Ihrem Feld Start in. (Verrückt aber wahr!)

Dies funktionierte, ohne dass eine Eingabeaufforderung ausgelöst werden musste.

(Entschuldigung, mein Repräsentant ist zu niedrig, um Ghazis Kommentaren meinen Tipp für grundlegende Aufgaben hinzuzufügen.)


21

Stellen Sie sicher, dass "Start In" KEINE ZITATE enthält.


7

Es funktioniert jetzt. Das habe ich getan. Sie werden wahrscheinlich nicht alle diese Schritte benötigen, damit es funktioniert, sondern nur, um sicherzugehen, dass Sie alle ausprobieren:

  • Überprüfen Sie die Kontoparameter Ihrer geplanten Aufgabe und stellen Sie sicher, dass sie so ausgeführt werden, dass sie ausgeführt werden, unabhängig davon, ob jemand am Computer angemeldet ist oder nicht

  • Überprüfen Sie den Lauf mit den meisten Berechtigungen / Rechten

  • Stellen Sie sicher, dass Sie zuerst zum vollständigen Pfad gehen: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Verwenden Sie keine doppelten Anführungszeichen in Ihren Batch-Dateien (weiß nicht warum, scheint aber zu helfen)

  • Seien Sie Superadministrator, geben Sie an der Eingabeaufforderung "Net User Administrator / Aktiv: Ja" ein, melden Sie sich ab und melden Sie sich als Superadministrator an, damit die Benutzerkontensteuerung deaktiviert ist


2
Tut mir leid zu sagen, aber dies ist eine sehr schlecht geschriebene Antwort. Ich würde sicherstellen, dass die richtige Antwort als akzeptierte Antwort ausgewählt wird.
Jwize

5

Stellen Sie sicher, dass "Start In" NICHT mit einem BACKSLASH endet.


1
Können Sie klarstellen, für welche Betriebssystemversion oder welche Art von Aufgabe oder für welche Informationen diese Informationen gelten? Die akzeptierte Antwort enthält ein \, sodass es auf einigen Systemen funktionieren muss - wo funktioniert es nicht?
Lessthanideal

Dies hat eine geplante 'foo.cmd'-Aufgabe für mich unter Windows Server 2012 behoben. Mit' Start in 'auf' C: \ Foo \ 'schlug die Aufgabe mit dem Exit-Code-Fehler 0x8007001 fehl, aber mit' Start in 'auf' C ' : \ Foo 'die Aufgabe lief gut.
Aaron

5

Hatte ein Problem, bei dem meine Aufgabe nicht ausgelöst wurde, nur weil sie auf einem Laptop ohne Netzkabel ausgeführt wurde ... Auf der Registerkarte "Bedingungen" ist standardmäßig aktiviert, damit eine Aufgabe nicht ausgeführt wird, wenn kein Netzstrom angeschlossen ist.


3

Unter Windows 7 Pro stellte ich fest, dass die Lösung von Arun für mich funktionierte: Ich konnte dies auch dann zum Laufen bringen, wenn "kein Benutzer angemeldet war". Ich entschied mich für die Verwendung der höchsten Berechtigungen.

Aus früheren Erfahrungen müssen Sie ein Konto mit einem Passwort haben (leere Passwörter sind nicht gut). Wenn das Programm Sie nach Abschluss des Assistenten nicht zur Eingabe des Passworts auffordert, gehen Sie zurück und bearbeiten Sie etwas, bis es funktioniert!

Dies ist die Methode für den Fall, dass nicht klar ist, welche funktioniert hat

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

Ich habe mehrere Stunden damit herumgespielt und viele verschiedene Vorschläge ausprobiert.

Ich habe es endlich zum Laufen gebracht, indem ich Folgendes getan habe:

Aktion: Starten Sie ein Programm

Programm / Skript: C: \ scriptdir \ script.bat

Fügen Sie Argumente hinzu (optional) script.bat

Beginnen Sie in (optional): c: \ scriptdir

Wird nur ausgeführt, wenn der Benutzer angemeldet ist

mit höchsten Berechtigungen ausführen

Konfigurieren für: Windows Vista, Windows Server 2008


2

Wenn der Rest für Sie hier fehlschlägt, stellen Sie sicher, dass der Benutzer, den Sie ausführen möchten, Zugriff auf die Datei hat, die Sie verwenden möchten.

In meinem Fall habe ich versucht, eine Batchdatei unter C: \ Users \ Administrator \ Desktop auszuführen, auf die das Konto nicht zugreifen konnte. Durch Verschieben an einen neutralen Ort in C: \ wurde das Problem behoben.


1

Bitte überprüfen Sie, mit welchem ​​Benutzerkonto Sie unsere Aufgabe ausführen. Es kann vorkommen, dass Sie Ihre Aufgabe mit einem anderen Benutzer als Ihrem Standardbenutzer ausführen und dieser Benutzer einige zusätzliche Berechtigungen benötigt. Es kann auch vorkommen, dass die Aufgabe ausgeführt wird, Sie jedoch keine Auswirkungen sehen können, da die Batchdatei auf eine Benutzerantwort wartet. Überprüfen Sie daher den Task-Manager, wenn Ihr Prozess ausgeführt wird. Sobald es passiert, dass ich einen Stapel mit SVN-Update einer Webseite plane und der Prozess hängt, weil SVN nach dem Akzeptieren des Serverzertifikats gefragt hat.


1
  1. Verwenden Sie in Ihrer cmd / batch-Datei keine doppelten Anführungszeichen
  2. Stellen Sie sicher, dass Sie zum vollständigen Pfadstart in (optional) gehen :
    C: \ Necessary_file \ Reqular_task \ QDE \ cmd_practice \

Geben Sie hier die Bildbeschreibung ein


1

Ich poste die Antwort auf diese Frage hier und hier .

Geben Sie hier die Bildbeschreibung ein


Solange Sie sicher sind, dass die andere Antwort korrekt ist, können Sie die Frage als doppelt kennzeichnen.
Badro Niaimi

0

Durch Testen der Schaltfläche Ausführen im Hauptfenster des Taskplaners zum Testen mehrerer Variationen wurden schließlich die richtigen Einstellungen gefunden. Diese beiden Optionen müssen kombiniert werden: - Nur ausführen, wenn der Benutzer angemeldet ist - Mit den höchsten Berechtigungen ausführen. Alle anderen Variationen sind fehlgeschlagen. Es macht die ganze Zeit wütend, die damit verschwendet wird, aber zumindest funktioniert es. Betriebssystem: WINDOWS 8 CORE (BASIC) -VERSION


0

Versuchen Sie, die Aufgabe mit hohen Berechtigungen auszuführen.

Fügen Sie am Ende des Pfads ein \ in "Start in Ordner" ein, z. B. c: \ temp \

Ich weiß nicht warum, aber das funktioniert manchmal bei mir.


0

Aktion: Start a Program

Programm / Skript: C:\Windows\System32\cmd.exe

Argumente hinzufügen: /k start "" "E:\scripts\example.bat"

Fügen Sie exitam Ende Ihrer Batch-Datei hinzu.

Das cmd-Fenster wird nicht angezeigt , wenn Sie auswählen Run whether user is logged in or not. Sie müssen auswählen Run only when user is logged on, um das Fenster in Aktion zu sehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.