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?

Ruben
quelle
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!

Ghazi
quelle
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)

Arun Raja
quelle
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.)

micstr
quelle
21

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

Jonathan
quelle
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

Ruben
quelle
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.

Michael Kehoe
quelle
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.

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

Robb
quelle
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.

Vince
quelle
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.

user6039542
quelle
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

Shahidul Islam Molla
quelle
1

Ich poste die Antwort auf diese Frage hier und hier .

Geben Sie hier die Bildbeschreibung ein

ToCarbajal
quelle
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

Sapitron
quelle
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.

C Jee
quelle
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.

Ethan Allen
quelle