Die Windows 7-Box enthält eine Liste der geplanten 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 wollen wir die Standard - Windows - Aufgaben behalten, und selektiv die Aufgaben zu löschen , die mit einer bestimmten Zeichenkette beginnen sagen abctask1
, abctask2
. Wie wir weiter vorgehen? Vielen Dank!
schtasks /Delete /TN abctask* /F
?/query
Option zu erhalten, sie zu durchlaufen, um diejenigen zu finden, die Ihrem gewünschten Muster entsprechen, und sie mit ihren vollständigen Namen zu töten. So etwas wie ein Perl-Skript ist möglicherweise am besten für diese Art von Aufgabe geeignet.Antworten:
Angenommen, Ihre Aufgaben sind ein Wort (z. B. abctask1, abctask2 - nicht "abc task 1"), sollte dies funktionieren:
quelle
find
eine Größe von weniger als 1/4findstr
schneller reagieren würde. Außerdem unterstützen beide die Verwendung von Anführungszeichen, um den Suchbegriff zu umgeben (find
erfordert sie). Auf diese Weise können Sie Aufgaben wie die von Ihnen erwähnte "abc task 1" finden.find
vs.findstr
, vor allem in etwas so klein. :-)for /f "tokens=2" %%x in ('schtasks /query /xml ^| findstr taskname') do
Wenn Sie möchten, dass bei der Auswahl der zu löschenden Aufgaben ein Platzhalter (*) verwendet wird, verwenden Sie diesen einfachen Stapelbefehl:
(nur Beispiele)
quelle
Ich bin hier gelandet, als ich nach einer Möglichkeit gesucht habe, das Deaktivieren einiger geplanter Windows-Standardaufgaben zu automatisieren. Ich konnte keines der aktuellen Beispiele dazu bringen, Aufgabennamen mit Backslashes und Leerzeichen richtig zu behandeln. Ich fand, dass die Verwendung des CSV-Formats und des Befehls find für mich am besten funktioniert:
quelle
Ihr habt hier ziemlich viel geholfen. Während das Obige für die kürzeren Namen funktioniert und 'user3490' eine nette Ergänzung zur Zeichenfolge gepostet hat, schien es immer noch nicht mit Namen mit Leerzeichen zu funktionieren. Ich habe festgestellt, dass die Verwendung von Platzhaltern mit SCHTASKS mit '.' anstatt '*' und fand eine interessante Modifikation an der Saite, die dringend benötigte Gelegenheit bietet! Ich werde unten Beispiele von dem einfügen, was ich in einer Batch-Datei verwendet habe:
Vielen Dank hier für die hervorragenden Hinweise! Ich bin mir bewusst, dass dieses Thema über ein Jahr alt ist, aber ich hoffe, dass dies jemand anderem hilft, der möglicherweise noch nicht so weit gekommen ist.
quelle
Marks Antwort funktioniert einwandfrei, solange Sie relativ kurze geplante Aufgabennamen haben, aber die Standardausgabe von
schtasks /query
(Tabellenformat) schneidet die Aufgabennamen auf 32 Zeichen ab, was beim Versuch, sie zu löschen, zu Fehlern führt.Wenn Sie sich mit Aufgaben befassen müssen, die längere Namen haben, würde ich empfehlen, stattdessen das Listenausgabeformat zu verwenden, das nicht abgeschnitten wird:
Wenn die Aufgaben, die Sie löschen möchten, ein gemeinsames Präfix haben, können Sie die Übereinstimmung in findstr weiter verfeinern:
quelle