Mit Batch Geplante Tasks auslesen und bestimmte löschen
Hallo
Ich arbeite gerade an einem Sicherungsprogramm in VBA, welches über robocopy sichern soll und gleichzeitig auch über die schtasks.exe von Windows das Planen von Sicherungen möglich machen soll.
Jetzt benötige ich eine Funktion, die alle von diesem Sicherungsprogramm erstellten Tasks finden und löschen kann.
Mit schtasks /delete geht es leider nicht so eifnach, da ich keine Wildcards (*) verwenden kann.
Die Tasks heissen, bis auf das letzte Stück alle gleich, was die Suche schonmal vereinfachen sollte.
Beispiel;
"Firma - Sicherung - *"
"Firma - Sicherung - " sind immer gegeben, nur die letzten * ändern sich.
Bisher bin ich soweit gekommen;
Dim AlleSicherungenLoeschen
AlleSicherungenLoeschen = shell (Schtasks /query > " & CurrentProject.path & "\Batch\" & Sicherungsname & _ & Temp.txt & "), vbHide
find "Blabla - Sicherung - *" " & CurrentProject.path & "\Batch\" & Sicherungsname & _ & Temp.txt & "
Jetzt müsste ich ...
- Die dem Beispiel entsprechenden Sicherungen aus der Textdatei in eine neue Textdatei extrahieren
- Die extrahierten Zeilen soweit umwandeln, dass nur noch "Firma - Sicherung - " sowie die jeweilige Sicherung, in der Textdatei stehen. Beispiel: "Firma - Sicherung - Donnerstag"
- Diese Zeilen in eine Batchdatei bringen, welche es ermöglicht, alle im Taskplaner gefundenen Sicherungen die mit "Firma - Sicherung - " anfangen zu löschen.
Unter Windows XP ging es einfach, da man den Ordner, in welchem die Tasks gespeichert waren, direkt ansprechen konnte (%WINDIR%\Tasks\ ...")
Klingt alles etwas konfus, aber vielleicht versteht ihr ja was ich meine.
Gibt es eine Möglichkeit, das Ganze unter Batch zu lösen ?
Ich arbeite gerade an einem Sicherungsprogramm in VBA, welches über robocopy sichern soll und gleichzeitig auch über die schtasks.exe von Windows das Planen von Sicherungen möglich machen soll.
Jetzt benötige ich eine Funktion, die alle von diesem Sicherungsprogramm erstellten Tasks finden und löschen kann.
Mit schtasks /delete geht es leider nicht so eifnach, da ich keine Wildcards (*) verwenden kann.
Die Tasks heissen, bis auf das letzte Stück alle gleich, was die Suche schonmal vereinfachen sollte.
Beispiel;
"Firma - Sicherung - *"
"Firma - Sicherung - " sind immer gegeben, nur die letzten * ändern sich.
Bisher bin ich soweit gekommen;
Dim AlleSicherungenLoeschen
AlleSicherungenLoeschen = shell (Schtasks /query > " & CurrentProject.path & "\Batch\" & Sicherungsname & _ & Temp.txt & "), vbHide
find "Blabla - Sicherung - *" " & CurrentProject.path & "\Batch\" & Sicherungsname & _ & Temp.txt & "
Jetzt müsste ich ...
- Die dem Beispiel entsprechenden Sicherungen aus der Textdatei in eine neue Textdatei extrahieren
- Die extrahierten Zeilen soweit umwandeln, dass nur noch "Firma - Sicherung - " sowie die jeweilige Sicherung, in der Textdatei stehen. Beispiel: "Firma - Sicherung - Donnerstag"
- Diese Zeilen in eine Batchdatei bringen, welche es ermöglicht, alle im Taskplaner gefundenen Sicherungen die mit "Firma - Sicherung - " anfangen zu löschen.
Unter Windows XP ging es einfach, da man den Ordner, in welchem die Tasks gespeichert waren, direkt ansprechen konnte (%WINDIR%\Tasks\ ...")
Klingt alles etwas konfus, aber vielleicht versteht ihr ja was ich meine.
Gibt es eine Möglichkeit, das Ganze unter Batch zu lösen ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 125946
Url: https://administrator.de/forum/mit-batch-geplante-tasks-auslesen-und-bestimmte-loeschen-125946.html
Ausgedruckt am: 15.05.2025 um 21:05 Uhr
7 Kommentare
Neuester Kommentar

Servus,
Soll das unter Vista laufen, oder wie ist diese Zeile zu verstehen?
Es gibt AT und schtasks
"normalerweise" nutzen jedoch die wenigsten heute noch AT - von daher würde ich das ganze dann mit At erledigen.
Gruß
Klingt alles etwas konfus, aber vielleicht versteht ihr ja was ich meine.
nicht ganz...Unter Windows XP ging es einfach
Soll das unter Vista laufen, oder wie ist diese Zeile zu verstehen?
Gibt es eine Möglichkeit, das Ganze unter Batch zu lösen ?
Es gibt AT und schtasks
"normalerweise" nutzen jedoch die wenigsten heute noch AT - von daher würde ich das ganze dann mit At erledigen.
Gruß

servus,
wie immer- wenn gar nüx geht...
das pipen der Schtasks in eine Datei und das filtern mittels findstr in eine andere und dann mit den Inhalten wiederum alle löschen...
Klappt immer.
At & Schtasks sind eigenständige Funktionen.
Ergo: at & schtasks funktonieren gemeinsam, aber mit at kann man nur zeitpläne löschen, die vorher via at auch angelegt wurden.
Von daher probiers doch mal aus.
at /?
Gruß
wie immer- wenn gar nüx geht...
das pipen der Schtasks in eine Datei und das filtern mittels findstr in eine andere und dann mit den Inhalten wiederum alle löschen...
Klappt immer.
At & Schtasks sind eigenständige Funktionen.
Ergo: at & schtasks funktonieren gemeinsam, aber mit at kann man nur zeitpläne löschen, die vorher via at auch angelegt wurden.
Von daher probiers doch mal aus.
at /?
Gruß
Hallo. Nur eine kurze Anmerkung:
Noch eine: Tasks lassen sich auch schön über GPPs erstellen, ändern und löschen. In Deinem Fall bringt das jedoch nichts nachträglich.
Unter Windows XP ging es einfach, da man den Ordner, in welchem die Tasks gespeichert waren, direkt ansprechen konnte (%WINDIR%\Tasks\ ...")
Unter Vista und W7 sollte das auch so gehen. Schau auch rein unter %windir%\System32\TasksNoch eine: Tasks lassen sich auch schön über GPPs erstellen, ändern und löschen. In Deinem Fall bringt das jedoch nichts nachträglich.
Hallo allerseits,
das Thema ist zwar schon etwas älter, aber ich hab da was noch nicht richtig verstanden:
Ich möchte auf verschiedenen Netzwerk-Computern überprüfen, welche Tasks geplant sind und bestimmte davon löschen:
Es gibt auf den Rechnern entweder keine oder eine unterschiedliche Anzahl von Tasks, die durchnumeriert sind (Taskname1, Taskname2...)
mit query kann ich die Tasks anzeigen und in ein logfile ausgeben.
per Hand (über cmd) kann ich genau benannte Tasks oder alle löschen.
Wie kann ich bei Taskname eingeben, dass ich Taskname1-22 löschen möchte (soweit vorhanden) (und dabei andere Tasks bestehen lasse)? Taskname* funktioniert nicht.
Kann mir da jemand ein wenig weiterhelfen?
Schon mal vielen Dank,
mwieapfel
das Thema ist zwar schon etwas älter, aber ich hab da was noch nicht richtig verstanden:
Ich möchte auf verschiedenen Netzwerk-Computern überprüfen, welche Tasks geplant sind und bestimmte davon löschen:
Es gibt auf den Rechnern entweder keine oder eine unterschiedliche Anzahl von Tasks, die durchnumeriert sind (Taskname1, Taskname2...)
mit query kann ich die Tasks anzeigen und in ein logfile ausgeben.
per Hand (über cmd) kann ich genau benannte Tasks oder alle löschen.
Wie kann ich bei Taskname eingeben, dass ich Taskname1-22 löschen möchte (soweit vorhanden) (und dabei andere Tasks bestehen lasse)? Taskname* funktioniert nicht.
Kann mir da jemand ein wenig weiterhelfen?
Schon mal vielen Dank,
mwieapfel
Moin.
Mach einen eigenen Thread auf, diesen nach über 3 Jahren wiederzubeleben ist keine gute Art.+
Erläutere darin näher, was
Mach einen eigenen Thread auf, diesen nach über 3 Jahren wiederzubeleben ist keine gute Art.+
Erläutere darin näher, was
Wie kann ich bei Taskname eingeben, dass ich Taskname1-22 löschen möchte (soweit vorhanden) (und dabei andere Tasks bestehen lasse)?
bezogen auf konkrete Beispiele bedeuten würde, damit ich es mir besser vorstellen kann.