CMD - Dateien bestimmter Größe / Alter finden

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.