schregi82
Goto Top

Inhalt von verschiedenen gleichnamigen Ordnern löschen

Abend zusammen,

ich habe hunderte temp-Ordner auf einem Fileserver. (Win 2003)
Eine auf einigen Clients verwendete Software legt diese zum Zwischenspeichern an.

Nachdem ich die Festplatten jetzt wieder einmal ausmiste, stellt sich mir folgende Frage:

Wie kann ich am schnellsten diese Dateien in den temp Ordnern löschen, lt. Freigabe der Abteilung dürfen allerdings nur Dateien gelöscht werden, die älter als 30 Tage sind.
Wäre ja mit Delage32 kein Problem, allerdings sind die übergeordneten Verzeichnisse unterschiedlich bzw. extrem verschachtelt. (bis zu 7 Ebenen).

Beispielsweise:
d:\xyzfiles\123\4567\temp
d:\xyzfiles\123\456\789\012\345\temp
d:\xyzfiles\123\456\789\012\345\678\901\temp

Im Grunde müsste der Pfad JEDES temp Ordners erfasst und in einer Schleife in Delage32 übernommen werden.
Da steige ich allerdings mit meinen Künsten aus.

Bin natürlich aber auch für jeden anderen sinnvollen Vorschlag dankbar.

lg,

Content-ID: 80008

Url: https://administrator.de/contentid/80008

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

bastla
bastla 06.02.2008 um 00:10:14 Uhr
Goto Top
Hallo schregi82!

DelAge32 kennt ja einen Schalter "/recurse" und kann daher alle Unterverzeichnisse selbstständig abgrasen ...

Grüße
bastla
schregi82
schregi82 06.02.2008 um 00:17:07 Uhr
Goto Top
Hallo Bastla,

Den Schalter hatte ich mir bereits zu Gemüte geführt. Jedoch löscht er dann alle Dateien die älter sind als 30 Tage, also auch die die NICHT gelöscht werden sollen in hierarchisch höheren Ordnern.
(Da identisches Dateiformat greift auch die Formateingrenzung nicht)

Erstellungsdatum beide 01.01.2007
d:\xyzfiles\123\456\789\012\345\678\901\test.idw = Soll erhalten bleiben
d:\xyzfiles\123\456\789\012\345\678\901\temp\test.idw = Soll gelöscht werden

Interessant ist jeweils nur der Inhalt des Ordners "temp".
Die anderen dürfen nicht gelöscht werden. (sonst bin ich einen Kopf kürzer) face-wink

lg,
TuXHunt3R
TuXHunt3R 06.02.2008 um 00:21:47 Uhr
Goto Top
Ansonsten in etwa so (ungetestet):

set log=<dein Logfile>
dir /b /s /a:d D: | find /i "temp">>%log%  
for /f %%a IN (%log%) do delage32 <deine Parameter>

Hab Delage leider gerade nicht zur Hand, kann dir die Parameter deshalb nicht gerade sagen.


Edit:

Ups, bin wohl ein bisschen spät
bastla
bastla 06.02.2008 um 00:25:51 Uhr
Goto Top
Hallo schregi82 und TuXHunt3R!

Mein Vorschlag wäre auch eine Ordnerliste, wobei sich mit "findstr" etwas genauer suchen lässt:
for /f "delims=" %%i in ('dir /s /b /ad d:\xyzfiles\*.* ^|findstr /i /e "temp"') do echo delage "%%i\*.*" 30  
Hier sollten nur Ordner gefunden werden, die ganz am Ende des Pfades stehen und mit "temp" enden (bzw mit dem Suchbegriff "\\temp" exakt "temp" heißen müssen - bis auf die Groß/Kleinschreibung, siehe "/i").

Grüße
bastla

@TuXHunt3R:
Ups, bin wohl ein bisschen spät
Ganz im Gegentum, nur etwas tiefer ... face-wink
schregi82
schregi82 06.02.2008 um 00:30:19 Uhr
Goto Top
Danke euch beiden, werd das morgen gleich testen.
Jetzt wird es wirklich mal Zeit das ich mich in "for" einlese.

lg,
TuXHunt3R
TuXHunt3R 06.02.2008 um 00:40:33 Uhr
Goto Top
Jetzt wird es wirklich mal Zeit das ich mich in "for" einlese.

Das lässt sich leider nicht umgehen, wenn du grössere Batches schreiben willst. Allerdings ist das Ding meiner Meinung nach zu kryptisch, aber was will man machen.......
TuXHunt3R
TuXHunt3R 06.02.2008 um 00:56:16 Uhr
Goto Top
Hier sollten nur Ordner gefunden werden, die ganz am Ende des Pfades stehen und mit "temp" enden (bzw mit dem Suchbegriff "\\temp" exakt "temp" heißen müssen - bis auf die Groß/Kleinschreibung, siehe "/i").

Verbesserung akzeptiert face-smile .
schregi82
schregi82 06.02.2008 um 11:06:11 Uhr
Goto Top
So funktioniert einwandfrei, nutze jetzt das Script von Tuxhunt3r. (Da blick ich noch eher durch face-wink )
Danke natürlich auch an Bastla.

Mal auf die schnelle knapp 3 GB freigemacht.

set log=tempdir.log
dir /b /s /a:d z:\ | find /i "temp">%log%  
for /f %%a IN (%log%) do delage32 %%a\*.* 30 /created

@TuXHunt3R: Das kannst du laut sagen !

lg,