Selektives Löschen geplanter Systemaufgaben

Selektives Löschen geplanter Systemaufgaben

Die Windows 7-Box enthält eine Liste geplanter Aufgaben -> Standard-Windows-Aufgaben + bestimmte benutzerdefinierte Aufgaben, die alle mit einer bestimmten Zeichenfolge beginnen. Der vorherige Code hat alle Aufgaben mit dem folgenden Befehl gelöscht:

schtasks /Delete /TN * /F

Stattdessen möchten wir die standardmäßigen Windows-Aufgaben beibehalten und selektiv die Aufgaben löschen, die mit einer bestimmten Zeichenfolge beginnen, beispielsweise abctask1, abctask2. Wie gehe ich weiter vor? Danke!

Antwort1

Vorausgesetzt, Ihre Aufgaben bestehen aus einem Wort (z. B. abctask1, abctask2 – nicht „abc Aufgabe 1“), sollte dies funktionieren:

for /f %%x in ('schtasks /query ^| findstr abctask') do schtasks /Delete /TN %%x /F

Antwort2

Wenn Sie bei der Auswahl der zu löschenden Aufgaben das Platzhalterzeichen (*) verwenden möchten, versuchen Sie es mit diesem einfachen Batch-Befehl:

(nur Beispiele)

echo off
del %SystemDrive%\Windows\Tasks\Google*
del %SystemDrive%\Windows\Tasks\Facebook*

Antwort3

Ich bin hier gelandet, als ich nach einer Möglichkeit suchte, einige geplante Standardaufgaben von Windows automatisch zu deaktivieren. Ich konnte keines der aktuellen Beispiele dazu bringen, Aufgabennamen mit Backslashs und Leerzeichen richtig zu verarbeiten. Ich habe festgestellt, dass die Verwendung des CSV-Formats und des Find-Befehls für mich am besten funktioniert:

for /f "tokens=1 delims=," %%x in ('schtasks /query /fo csv ^| find "\Microsoft\Windows\Application Experience\"') do schtasks /Delete /TN %%x /F

Antwort4

Die Antwort von Mark funktioniert einwandfrei, solange Sie relativ kurze geplante Aufgabennamen haben, aber die Standardausgabe von schtasks /query(Tabellenformat) kürzt die Aufgabennamen auf 32 Zeichen, was beim Versuch, sie zu löschen, zu Fehlern führt.

Wenn Sie mit Aufgaben zu tun haben, die längere Namen haben, empfehle ich stattdessen die Verwendung des Listenausgabeformats, bei dem keine Abschneidungen vorgenommen werden:

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr abctask') do schtasks /Delete /TN %%x /F

Wenn die Aufgaben, die Sie löschen möchten, ein gemeinsames Präfix haben, können Sie die Übereinstimmung von findstr weiter verfeinern:

for /f "tokens=2 delims=\" %%x in ('schtasks /query /fo:list ^| findstr ^^abctask') do schtasks /Delete /TN %%x /F

verwandte Informationen