CMD - Dateien bestimmter Größe / Alter finden
Hallo ich bin auf der Suche nach einer Batch-Datei bzw. Kommandozeile im CMD, die Dateien bestimmter Größe / Alter finden. Ich möchte erstmal meine Festplatte auf alle Dateien die kleiner als 500 KB sind durchsuchen. Danach will ich meine Festplatte nach alle Dateien die älter als 5 Jahre sind durchsuchen. Kann mir da jemand sagen wie ich meine Batchdatei da schreiben muss? Oder die einzelnen eingaben in der Kommandozeile?
Danke, MfG
Tom
2 Antworten
Ich muss MCR1P zustimmen. Batch eignet sich dafür nicht, da die Rechenzeit gewaltig ist.
Hier trotzdem der Befehl, um nach Dateien kleiner als 500 KB zu suchen:
FOR /F "delims=" %%A IN ('dir /A-D /B /S "%SystemDrive%\"') DO if %%~zA LSS 512000 echo %%A
Der Befehl schaut für jede Zeile, die DIR ausgibt (keine Ordner, nur Dateipfad, alle Unterordner durchsuchen), ob die Dateigröße (file siZe) kleiner als 512000 Byte = 500 KB ist.
Für die Alter-Suche brauchst du die Batch-Formel für Julian Days, die ich mir nirgendwo notiert habe. Auf www.dostips.com kannst du die finden. Außerdem musst du wissen, wie das Datum angegeben ist (ob TT.MM.JJJJ oder MM\TT\JJ o. Ä.). Wenn du das weißt, musst du folgenden Befehl anpassen:
Setlocal EnableDelayedExpansion
FOR /F "tokens=1,2,3 delims=./ " %%A IN ('dir /A-D /T:C /S "%SystemDrive%\"') DO (
set /a Tag=%%A
set /a Monat=%%B
set /a Jahr=%%C
set /a Alter_in_Tagen=[Berechnung von Julian Days]
if !Alter_in_Tagen! GTR 1826 echo %%~fA
)
In dem Befehl habe ich die Reihenfolge TT.MM.JJJJ vorausgesetzt, da du vermutlich ein deutsches System hast.
Für jede Zeile, die DIR ausgibt (keine Ordner, Erstellungsdatum anzeigen, alle Unterordner durchsuchen), berechnet die Befehlskette das Alter in Tagen und gibt die Datei aus, wenn sie älter als 1826 Tage (5 Jahre inkl. 1 Schaltjahr) ist.
Windows Powershell ist da wesentlich mächtiger. Ist soweit ich weiß ab Vista, sicher ab Win7 verfügbar. ist objektorientiert, das erleichtert dir dein Vorhaben.