[Batch] bestimmte Dateien löschen?
Hallo liebe Leute!
Folgendes Szenario:
Ich habe einen Ordner in dem jede Stunde ein PDF Namens "agent_calls_queue_specific[3].pdf" erzeugt wird.
Die Datei wird nicht jede Stunde überschrieben sondern Automatisch unbenannt in z.B. "agent_calls_queue_specific[3].pdf_old_10.26.2018_013455".
Ist es möglich alle Dateien in dem Ordner mit "_old_":
"agent_calls_queue_specific[3].pdf_old_ " zu löschen?
Es soll am ende nur die eigentlich erstelle Datei "agent_calls_queue_specific[3].pdf" im Ordner sein.
Dies möchte ich per Batch lösen.
Vielen Dank schonmal!
3 Antworten
Das ist einfach:
@move /y "*.pdf_old_*" "_old_"
Das ist schon die komplette Batch.
Wenn die regelmäßig ausgeführt werden soll, dann speicherst Du diese im selben Verzeichnis und lässt sie mit dem Task-Manager (Aufgabenplanung) ausführen.
Dort kannst Du auch einfach obige die Befehlszeile eingeben, aber dann musst Du den vollständigen Pfad angeben, z.B.:
move /y "C:\Pfad\zum\Log-Ordner\*.pdf_old_*" "C:\Pfad\zum\Log-Ordner\_old_"
Wenn Du das Aufpoppen des Consolen-Fensters verhindern willst, dann solltest Du aber die Batch-Lösung wählen und dazu eine LNK-Verknüpfung (im gleichen Verzeichnis) erstellen und hier dann unter Fensteroptionen "Minimiert" einstellen und dann im Task-Manager die Verknüpfung aufrufen.
Ups! Da hab ich nicht genau gelesen. Ich werd heute einfach nicht wach …
Ich hab "verschieben" gelesen … 😴
Aber das Prinzip ist dasselbe nur mit DEL anstatt mit MOVE. Der /Y Schalter erzwingt nur eine Sicherheits-Abfrage, die beim gewollten Löschen natürlich auch hinfällig ist.
Die ersten beiden Befehle sind auch nicht erforderlich, wenn man sich im selben Verzeichnis befindet oder das Verzeichnis im Muster angibt. und einfach das @ vorweg stellt.
cd /D "R:\"
del /F "agent_calls_queue_specific[3].pdf_old_*"
del *.pdf_old_*
geht leider nicht, die bat sieht so aus:
@echo off
cd r:\
del *.pdf agent_calls_queue_specific[3].pdf_old_*
Es sollen alle PDF Dateien die "agent_calls_queue_specific[3].pdf_old_" enthalten gelöscht werden
Wenn du nicht alle pdf-Dateien, die mit _old_ gekennzeichnet wurde, löschen willst, sondern nur die pdf-Dateien des Namens agent_calls_queue_specific[3].pdf, die mit _old_gekennzeichnet wurden, verlängerst du das Löschmuster einfach:
del "agent_calls_queue_specific[3].pdf_old_*"
Wenn die 3 in den eckigen Klammern dynamisch ist, setzt du dort auch noch einen Stern hinein:
del "agent_calls_queue_specific[*].pdf_old_*"
geht leider nicht, die bat sieht so aus:
@echo off
cd r:\
del *.pdf agent_calls_queue_specific[3].pdf_old_*
Es sollen alle PDF Dateien die "agent_calls_queue_specific[3].pdf_old_" enthalten gelöscht werden