Löschen Sie den geplanten Tasknamen, der Leerzeichen enthält

998
eureka

Ich möchte geplante Aufgaben löschen, die mit "Adobe Acrobat" beginnen, z. B. "Adobe Acrobat 123", "Adobe Acrobat 456", "Adobe Acrobat 789".

schtasks /Delete /TN Adobe* /F 

Dieser Befehl kann keine Aufgaben finden, da er buchstäblich nach dem Aufgabennamen "Adobe *" sucht.

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

Dies funktioniert nur für Aufgabennamen ohne Leerzeichen, z. B. findet Taskname nur, wenn "AdobeAcorbat123"

Wie kann ich alle geplanten Tasknamen löschen, die mit "Adobe" beginnen und Leerzeichen enthalten?

2

1 Antwort auf die Frage

2
Karan

Versuchen Sie es stattdessen:

for /f "tokens=1*" %%a in ('schtasks /query /fo list ^| findstr /r "TaskName.*Adobe"') do schtasks /delete /tn "%%b" /f 

Der findstr- Teil verwendet regex (reguläre Ausdrücke), um nur die Zeilen zu extrahieren, die die Zeichenfolgen "TaskName" und "Adobe" enthalten, aus der Ausgabe von Aufgaben . Dieses wird dann mit einem Token versehen for /f(siehe for /?mehr), und das zweite Token, das den vollständigen Pfad zur Aufgabe ( einschließlich Leerzeichen ) enthält, wird extrahiert und an einen anderen Befehl von schtasks übergeben, der die Aufgabe löscht.

Obwohl dies die Frage beantworten kann, wäre es eine bessere Antwort, wenn Sie eine Erklärung liefern könnten, warum dies so ist. DavidPostill vor 8 Jahren 0
@DavidPostill: Weitere Details hinzugefügt. Karan vor 8 Jahren 1
@ Karan Danke! Ich habe nicht über das Listenformat nachgedacht. =) eureka vor 8 Jahren 0