Batch - SCHTASKS(geplante Aufgaben) mit anderen Parametern ausführen


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

tklustig

Erfahrenes Mitglied
Hallo Leute,
folgender Befehl erzeugt im Aufgabenplaner einen Task, der alle 10 Minuten ausgeführt wird, beginnend mit der Ausführung des Befehls

Bash:
SCHTASKS /create /sc minute /mo 10 /tn "dartsplus otc automatic" /tr J:\programme\DartsXfi\_dtmauto.bat
So weit, so gut. Wie muß dieser Befehl abgeändert werden, damit dass nur von Montag bis Samstag passiert, und auch nur zwischen 7:00 Uhr - 19:00 Uhr?
 

Bullja

Erfahrenes Mitglied
So weit mir bekannt kann der Windows Scheduler derart Schedules nicht bieten.
Du könntest das auszuführende Command die Logic übernehmen... Z.b mit:
/tr "powershell 'if ((Get-Date).DayOfWeek -eq 7 -or (Get-Date).Hour -lt 7 -or (Get-Date).Hour -gt 19) {exit}; J:\programme\DartsXfi\_dtmauto.bat'"
Der if-Block würde den Aufruf des .bat Script abbrechen wenn entweder Sonntag ist oder es vor 7 Uhr oder nach 19 Uhr ist. Ansonsten wird das .bat aufgerufen. Am besten einmal in PowerShell einmal testen ob es so auch funktioniert denn der Windows task scheduler liefert weniger hilfreiche errorcodes.
 

tklustig

Erfahrenes Mitglied
Dieses Script müsste ich aber weiterhin im Aufgabenplaner aufrufen lassen, korrekt? Derzeit mache ich das so:
Bash:
REM von Montag bis Samstag, alle 10 Minuten, von 7:00 Uhr bis 19:00 Uhr, beginnend am 01.01.2020 bis zum Jahre 2022
SCHTASKS /create /sc weekly /d MO,TUE,WED,THU,FRI,SAT /tn "CallXFI DTM automatic" /tr J:\programme\DartsXfi\_dtmauto.bat /st 07:00 /et 19:00 /k /sd 01/01/2020 /ed 01/01/2022
ECHO %date% %time%:Die Datei _dtmauto.bat wird ab jetzt alle 10 Minuten zwischen 7:00 Uhr und 19:00 Uhr, beginnend ab dem 01.01.2020, ausgefuehrt  >> %UPDATE_LOG%
REM Alle 30 Minuten, täglich, von 7:00 Uhr bis 18:00 Uhr, beginnend am 01.01.2020 bis zum Jahre 2022
SCHTASKS /create /tn "CallXFI OTC automatic" /tr J:\programme\DartsXfi\_otcauto.bat /sc minute /mo 30 /st 07:00 /et 18:00 /sd 01/01/2020 /ed 01/01/2022
ECHO %date% %time%:Die Datei _otcauto.bat wird ab jetzt alle 30 Minuten zwischen 7:00 Uhr und 18:00 Uhr, beginnend ab dem 01.01.2020, ausgefuehrt  >> %UPDATE_LOG%
REM Jeden Montag, Mittwoch, Freitag und Samstag um 21:00 Uhr, beginnend beginnend am 01.01.2020, bis zum Jahre 2022
SCHTASKS /Create /sc weekly /d MO,WED,FRI,SAT /tn "CallXFI XFIZipper" /tr J:\programme\XMLZipperXFI\startXFIZipper.cmd /st 21:00 /sd 01/01/2020 /ed 01/01/2022
Folgende Aufgabe wird zwar in den Aufgabenplaner übernommen, wirft aber ein Fehler aus, den ich nicht inspizieren kann, da sich das Powershell Fenster sofort wieder schließt:
Bash:
REM 
REM Alle 30 Minuten, täglich, von 7:00 Uhr bis 18:00 Uhr, beginnend am 01.01.2020 bis zum Jahre 2022, von MO bis SA
SCHTASKS /create /tn "CallXFI OTC automatic" /tr "powershell 'if ((Get-Date).DayOfWeek -eq 7 -or (Get-Date).Hour -lt 7 -or (Get-Date).Hour -gt 18) {exit}; J:\programme\DartsXfi\_otcauto.bat'"  /sc minute /mo 30 /st 07:00 /et 18:00 /sd 01/01/2020 /ed 01/01/2022
 
Zuletzt bearbeitet:

Bullja

Erfahrenes Mitglied
Ok der scheduler bietet derart Schedules also doch an... Dann wird die Powershell Logik nicht gebraucht. Raus damit, dann sollte es mit "/sc minute /mo 30 /st 07:00 /et 18:00" wie von dir beschrieben funktionieren.
Das Fenster schliesste sofort weil es bei Dir zum Zeitpunkt eben Sonntag war ;)

Siehe auch schtasks
 

tklustig

Erfahrenes Mitglied
Die PowerShell Logik benötige ich trotzdem. Wie sonst kann ich die Logik bzgl. der Wochentage unterbringen. Das muss ich mit PowerShell machen. Folgendes Szenario wird eigentlich benötigt:

Alle 30 Minuten, täglich, von 7:00 Uhr bis 18:00 Uhr, beginnend am 01.01.2020 bis zum Jahre 2022, von MO bis SA.

Die Anweisung /et 18:00 wird ebenfalls nicht sauber verarbeitet. So sieht das derzeit aus:
trigger.jpg
Das stimmt aber so nicht. Anstatt sofort müsste da 12 Stunden stehen. Über die DropdownBox könnte ich das einstellen, das ist aber nicht Sinn der Sache. Folgender Batchbefehl wirft nach der Ausführung in Powershell eine Exception aus, die aber nur kurz zu sehen ist:
Code:
SCHTASKS /create /tn "CallXFI OTC automatic" /tr "powershell 'if ((Get-Date).DayOfWeek -eq 7) {exit}; J:\programme\DartsXfi\_otcauto.bat'"  /sc minute /mo 30 /st 07:00 /et 18:00 /sd 01/01/2020 /ed 01/01/2022
Wie würdest du das komplette Batch Statement codieren? Vielleicht doch so?
Bash:
SCHTASKS /create /tn "CallXFI OTC automatic" /tr "powershell 'if ((Get-Date).DayOfWeek -eq 7 -or (Get-Date).Hour -lt 7 -or (Get-Date).Hour -gt 18) {exit}; J:\programme\DartsXfi\_otcauto.bat'"  /sc minute /mo 30 /sd 01/01/2020 /ed 01/01/2022
 
Zuletzt bearbeitet:

Bullja

Erfahrenes Mitglied
...Batchbefehl wirft nach der Ausführung in Powershell eine Exception aus, die aber nur kurz zu sehen ist...
Öffne die cmd.exe und rufe das hier direkt auf damit die Exception im Fenster sichtbar wird:
powershell 'if ((Get-Date).DayOfWeek -eq 7 -or (Get-Date).Hour -lt 7 -or (Get-Date).Hour -gt 18) {exit}; J:\programme\DartsXfi\_otcauto.bat'

Das /et 18 würde ich dann weglassen denn die PowerShell Logik macht die Überprüfung mit "(Get-Date).Hour -gt 18"
 

Bullja

Erfahrenes Mitglied
Wie würdest du das komplette Batch Statement codieren? Vielleicht doch so?
Bash:
SCHTASKS /create /tn "CallXFI OTC automatic" /tr "powershell 'if ((Get-Date).DayOfWeek -eq 7 -or (Get-Date).Hour -lt 7 -or (Get-Date).Hour -gt 18) {exit}; J:\programme\DartsXfi\_otcauto.bat'" /sc minute /mo 30 /sd 01/01/2020 /ed 01/01/2022
Ja genau. Funktioniert bei mir so mit einem test.bat. Öffne besser vorher mal eine cmd.exe und gib das hier ein um herauszufinden wie sich das _otcauto.bat verhält wenn es von der PowerShell heraus aufgerufen wird (ohne Zeit/Tages-Logik)... powershell 'J:\programme\DartsXfi\_otcauto.bat'

Womöglich bleibt das Fenster am Ende offen und Du müsstest noch etwas anderes tun damit das nicht passiert..
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…