Veraltete Dateien aus spezifischen Unterverzeichnissen löschen
Hallo allerseits
Leider bin ich trotz intensiver Suche auf dem Web und auch auf dieser Seite noch nicht auf die richtige Lösung gestossen. Ich kann mir aber nicht vorstellen, dass ich der einzige bin, der vor diesem Problem steht.
Nun zähle ich auf eure Hilfe.
Aus einzelnen Unterverzeichnissen sollte ich automatisch Dateien löschen können, die älter als eine bestimmte Zeitspanne sind.
Ich habe z.B. folgende Verzeichnisstruktur:
In der zweiten Ebene (Ordner) gibt es jeweils einen Ordner namens "Temp". IN diesem Temp-Ordner muss nun (in allen Unterordnern, die ganz unterschiedlich heissen können) nach Dateien mit einem bestimmten Namensmuster (z.B. Name*.zip und Name*.map) gesucht und DIE Dateien gelöscht werden, die älter als 10 Tage sind.
Die Crux an der Sache ist, das Namensmuster würde auch auf gleichnamige Dateien in Ordnern der zweiten Ebene greifen. Diese Dateien dürfen aber NICHT gelöscht werden. Weiter kommt hinzu, dass die Anzahl an "Hauptordner" (erste Ebene) und Unterordner (dritte Ebene) dynamisch wachsen kann.
Ich benötige also ein Script, welches automatisch in allen vorhandenen Hauptordnern nach dem Ordner "Temp" sucht und NUR dort die Dateien löscht, die dem Namensmuster entsprechen UND die älter sind als X Tage sind.
Ich hoffe, ich habe mich verständlich genug ausgedrückt und jemand von euch hier weiss mir einen Rat bzw. hat vielleicht gar ein fertiges Script!?
Schöne Grüsse aus der sonnigen Schweiz!
Leider bin ich trotz intensiver Suche auf dem Web und auch auf dieser Seite noch nicht auf die richtige Lösung gestossen. Ich kann mir aber nicht vorstellen, dass ich der einzige bin, der vor diesem Problem steht.
Nun zähle ich auf eure Hilfe.
Aus einzelnen Unterverzeichnissen sollte ich automatisch Dateien löschen können, die älter als eine bestimmte Zeitspanne sind.
Ich habe z.B. folgende Verzeichnisstruktur:
D:
\Hauptordner1
\Ordner1 (namens "Temp")
\Unterordner1
\Unterordner2
\UnterordnerN
\Ordner2
\Unterordner1
\Unterordner2
\UnterordnerN
\OrdnerN
\Unterordner1
\Unterordner2
\UnterordnerN
\Hauptordner2
\Ordner1 (namens "Temp")
\Unterordner1
\Unterordner2
\UnterordnerN
\Ordner2
\Unterordner1
\Unterordner2
\UnterordnerN
\OrdnerN
\Unterordner1
\Unterordner2
\UnterordnerN
\HauptordnerN
In der zweiten Ebene (Ordner) gibt es jeweils einen Ordner namens "Temp". IN diesem Temp-Ordner muss nun (in allen Unterordnern, die ganz unterschiedlich heissen können) nach Dateien mit einem bestimmten Namensmuster (z.B. Name*.zip und Name*.map) gesucht und DIE Dateien gelöscht werden, die älter als 10 Tage sind.
Die Crux an der Sache ist, das Namensmuster würde auch auf gleichnamige Dateien in Ordnern der zweiten Ebene greifen. Diese Dateien dürfen aber NICHT gelöscht werden. Weiter kommt hinzu, dass die Anzahl an "Hauptordner" (erste Ebene) und Unterordner (dritte Ebene) dynamisch wachsen kann.
Ich benötige also ein Script, welches automatisch in allen vorhandenen Hauptordnern nach dem Ordner "Temp" sucht und NUR dort die Dateien löscht, die dem Namensmuster entsprechen UND die älter sind als X Tage sind.
Ich hoffe, ich habe mich verständlich genug ausgedrückt und jemand von euch hier weiss mir einen Rat bzw. hat vielleicht gar ein fertiges Script!?
Schöne Grüsse aus der sonnigen Schweiz!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189021
Url: https://administrator.de/contentid/189021
Ausgedruckt am: 26.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Worlddiver und willkommen im Forum!
Zum Thema "Löschen alter Dateien" solltest Du ausreichend Hinweise (gerade auch hier im Forum finden), daher nur zum "Abklappern" der richtigen Ordner:
bzw einfacher, wenn jeweils der gesamte "Temp"-Ordner inkl Unterordnern gemeint ist:
Grüße
bastla
Zum Thema "Löschen alter Dateien" solltest Du ausreichend Hinweise (gerade auch hier im Forum finden), daher nur zum "Abklappern" der richtigen Ordner:
for /d %%i in ("D:\*") do for /d %%a in ("%%i\Temp\*") do echo Bearbeite "%%a"
for /d %%i in ("D:\*") do if exist "%%i\Temp\" echo Bearbeite "%%i\Temp"
bastla
Hallo Worlddiver!
Soferne alle unterhalb von "Temp" liegenden leeren Unterverzeichnisse gelöscht werden sollen, dann etwa so:
Erklärung dazu: Es werden sämtliche Unterverzeichnisse mit "
ausgegeben, was aber durch Umleitung des Fehlerkanals nach "
Damit Du Dir das zunächst einmal ansehen kannst, steht vor dem "
Grüße
bastla
Soferne alle unterhalb von "Temp" liegenden leeren Unterverzeichnisse gelöscht werden sollen, dann etwa so:
for /d %%i in (D:\Hauptordner\*) do for /f "delims=" %%u in('dir /s/b/ad "%%i\Temp"^|sort /r') do echo rd "%%u" 2>nul
dir /s/b/ad
" ermittelt und absteigend sortiert - damit werden zuerst die längsten Pfade (= am tieftsten in der Struktur liegenden Verzeichnisse) verarbeitet, wobei der Löschbefehl "rd
" ohne Zusatz nur löscht, wenn das Verzeichnis leer ist; ansonsten würde die MeldungDas Verzeichnis ist nicht leer.
nul
" unterbunden wird.Damit Du Dir das zunächst einmal ansehen kannst, steht vor dem "
rd
" noch ein "echo
", wodurch der Löschbefehl nur angezeigt wird ...Grüße
bastla