Alle Unterordner mit Dateien älter 200x löschen
Ich möchte in einer recht verzweigten Ordnerstruktur alle Unterordner löschen, in denen alle enthaltenen Dateien älter als zb. 2007 sind (unser Netzlaufwerk soll mal aufgeräumt werden).
Ist das DOS Kommandos möglich (oder kennt gar jemand ein Tool dass das leistet)?
Vielen Dank
Ist das DOS Kommandos möglich (oder kennt gar jemand ein Tool dass das leistet)?
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 187253
Url: https://administrator.de/contentid/187253
Ausgedruckt am: 20.11.2024 um 08:11 Uhr
9 Kommentare
Neuester Kommentar
moin,
wie soll den forfiles die Ordner rausfinden, welche auch Jüngere und die alten Dateien hat?
Damit kenne ich mich aber zuwenig aus.
[Edit]
Kommentare eingefügt
[/Edit]
Gruß Phil
wie soll den forfiles die Ordner rausfinden, welche auch Jüngere und die alten Dateien hat?
Damit kenne ich mich aber zuwenig aus.
@echo off
setlocal
set "Ordner=\\server\freigabe\"
rem MM-TT-JJJJ
set "BehalteAb=01-01-2007"
rem Laufwerk muss existent sein Ordner darf nicht.
set "TestcopyNach=D:\TEST\"
rem Ende Einstellungen
set "Alle=%temp%\Alleliste.lst"
set T="%temp%\alltmp.lst"
set "del=%temp%\del.lst"
rem Liste mit Unterordnern wird erzeugt.
(for /d /r "%Ordner%" %%i in (*) do @echo %%i\\)> "%Alle%"
rem Vergleich mit einer Liste welche neuere Dateien enthalten wuerde
rem Rest kommt in Vorruebergehende Loeschliste
(for /f delims^= %%i in ('xcopy /l /s /D:%BehalteAb% "%ordner%*.*" "%TestcopyNach%"') do @find /v "%%~dpi\" "%Alle%") >%T%
rem Liste wird auf Rueckwarts sortiert nach Loeschliste
sort /r %t% > "%del%"
rem Odner der Löschliste werden auf eventuelle Unterordner welche neue Dateien enthalten geprueft oder geloescht
for /f usebackQdelims^= %%i in ("%del%") do dir /ad /b /s |find /v "" >nul || @echo rd /s "%%~fi"
[Edit]
Kommentare eingefügt
[/Edit]
Gruß Phil
Moin Phil.
Beispielsweise so (für 7 Tage):
Das haut natürlich auch Dateien in Ordnern weg, in denen auch neuere Dateien liegen - Du hast Recht, könnte unerwünscht sein.
Beispielsweise so (für 7 Tage):
attrib -s -h c:\Test\*.* /D /S
forfiles /p c:\Test /d -7 /c "cmd /c del @file /q" /s
forfiles /p c:\Test /c "cmd /c if @isdir==TRUE rd @file /q" /s
Das haut natürlich auch Dateien in Ordnern weg, in denen auch neuere Dateien liegen - Du hast Recht, könnte unerwünscht sein.
Hallo TBlinker,
so wie es unsere Vorredner schon auf den Punkt gebracht haben und wie dein Wunsch ist, ist es momentan schwer, auf Ordnerbasis ganze Ordner zu löschen.
Wenn sich jüngere Dateien in einem Ordner befinden, welcher hauptsächlich "alte" Dateien beinhaltet, dann wird er ja nie gelöscht (bezugnehment auf deine Frage!)
Also, wie soll man sich das ganze vorstellen? Es gibt Ordner - meinetwegen auch Unterordner - die beinhalten Dateien. Wenn ein Jahr/Monat/Woche/Tag abgeschlossen ist/sind kommen dann noch neue Dateien dazu irgendwann mal?
Einfacher wird's wenn ein Ordner gelöscht werden soll, der mindestens eine Datei älteren Types (was vorher definiert wird!) beinhaltet. Aber dann wären ja auch neuere Dateien futsch.
Also Du siehst, deine Aufgabenstellung wirft Fragen auf. Realisieren lässt sich viel. Man muss es nur ganz klar definieren. Sonst geht's in die BadeHose
Gruss
Tsuki
so wie es unsere Vorredner schon auf den Punkt gebracht haben und wie dein Wunsch ist, ist es momentan schwer, auf Ordnerbasis ganze Ordner zu löschen.
Wenn sich jüngere Dateien in einem Ordner befinden, welcher hauptsächlich "alte" Dateien beinhaltet, dann wird er ja nie gelöscht (bezugnehment auf deine Frage!)
Also, wie soll man sich das ganze vorstellen? Es gibt Ordner - meinetwegen auch Unterordner - die beinhalten Dateien. Wenn ein Jahr/Monat/Woche/Tag abgeschlossen ist/sind kommen dann noch neue Dateien dazu irgendwann mal?
Einfacher wird's wenn ein Ordner gelöscht werden soll, der mindestens eine Datei älteren Types (was vorher definiert wird!) beinhaltet. Aber dann wären ja auch neuere Dateien futsch.
Also Du siehst, deine Aufgabenstellung wirft Fragen auf. Realisieren lässt sich viel. Man muss es nur ganz klar definieren. Sonst geht's in die BadeHose
Gruss
Tsuki
N'Abend,
Auf welchem filesystem liegen denn die Daten?
Bei soltle das schauen nach dem "last-modifired-Datum" zumindest ein wenig weiterhelfen. Wenn das last-modified mehrere Jahre zurückliegt, sollten da auch keine neueren Dateien liegen.
Ich würde für so tewas daher find aus dem fundus von cygwin nehmen. (find.exe gibt es auch standalone).
lks
Auf welchem filesystem liegen denn die Daten?
Bei soltle das schauen nach dem "last-modifired-Datum" zumindest ein wenig weiterhelfen. Wenn das last-modified mehrere Jahre zurückliegt, sollten da auch keine neueren Dateien liegen.
Ich würde für so tewas daher find aus dem fundus von cygwin nehmen. (find.exe gibt es auch standalone).
lks
Zitat von @TBlinker:
... Also nur diejenigen, in denen alle Dateien älter als X sind.
Es gibt viele Ordner, in den aktuelle Dateien neben uralten Liegen (irgendwelche thematisch zugehörigen Grundlagendokumente zb.) diese sollen erhalten bleiben.
genau das kannst Du mit Diesem Batch auch erstmal gefahrlos Testen,... Also nur diejenigen, in denen alle Dateien älter als X sind.
Es gibt viele Ordner, in den aktuelle Dateien neben uralten Liegen (irgendwelche thematisch zugehörigen Grundlagendokumente zb.) diese sollen erhalten bleiben.
weil @echo zeigt was es täte wenn es nicht mehr dasteht.
Gruß Phil