Alle Datein die kleiner als "z.B. 300kB" sind löschen ?!

  • Hi, ich hab ein kleines Problem, ich habe Fotos heruntergeladen (viele Fotos ca. 7800 ~) und alle in einem Ordner gespeichert. (Ordner hat auch Unterordner in denen Fotos sind). Jetzt ist mir ein Fehler unterlaufen und ich habe kleinere Bilder hineinkopiert, die da eingentlich nicht hingehören. Diese möchte ich dann ohne extrem viel Aufwand wegbekommen.

    Meine Frage: Ist es möglich ein skript zu erstellen, welches Dateien die kleiner als eine bestimmte (über eine .ini) eingestellte Größe sind, zu löschen?
    Wenn ja wie bitte?

    Hoffe, dass mir bitte jemand helfen kann. Es ist sehr wichtig! Danke!

  • Das Problem ist, dass es auch sehr viele Unterordner gibt (für jeden Tag einen) ... und es lange dauern würde, diese zu durchforsten. Weiter läuft der WinExplorer sehr labil bei der großen Datenmenge (lange Ladezeiten).

  • Hi, Problem mit TCM ist dass das Programm streickt, soblad ich den gewünschten Ordner anwähle.
    Ich selbst verwende oft den TCM und bin ihm gegenüber sehr loyal, aber dass packt er nicht. Er hängt sich sofort auf.

    Aufs lernen bezogen, dass wäre auch ein Grund, so eine Herausvorderung mal zu bewältigen. (bin aber nicht gerade der beste, obwohl autoit sehr leicht zu erlernen ist)

  • Ich möchte nicht unbedingt, dass jemand das Skript für mich schreibt.

    Meine Vorstellung:

    $size = FileGetSize("C:\Fotos\*.*") obwohl *.* nicht geht, weil ich jede datei einzeln brauch
    $var1 = "300000"
    if $size <= $var1 then

    Wird nix!

    Ich brauch eine Schleife, die jede Datei einzeln abfragt, nach dem Abfragen mit dem vorgegebenen Wert vergleicht, dann einteilt in löschen oder nicht löschen und dann zur nächsten datei springt. Zuvor müssen noch alle Dateien die sich im Order befinden irgendwie bestimmt werden . . .

    (blablabla ich hab keine Ahnung wie ich das machen soll)

    Bitte helfen!

  • probier mal mit FileFindFirstFile & FileFindNextFile ....
    geht eine datei nach der anderen durch, dann kannste FileGetSize machen,die größe vergleichen und die datei löschen bzw wieder von vorne beginnen...

    [autoit]


    $search = FileFindFirstFile($FileType)
    ;Fehlermeldung, falls keine Übereinstimmung
    If $search = -1 Then
    MsgBox(16, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

    ;suche weiter
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop

    [/autoit][autoit][/autoit][autoit][/autoit]

    auszug aus nem alten script von mir

    • Offizieller Beitrag

    Hi,

    hier mal quick & dirty wie man sowas angehen könnte:

    Spoiler anzeigen
    [autoit]

    #include<File.au3>
    #include<Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Variablen
    Global $lines_A
    Global $tempFile = _TempFile("C:\", "jpg_", ".txt", 7)
    Global $fileSize = 300 ; in KByte

    [/autoit] [autoit][/autoit] [autoit]

    Global $folder = FileSelectFolder('Aus welchen Ordner sollen Dateien gelöscht werden?', '\', 6, StringLeft(@ScriptDir, 3))
    If @error Then
    MsgBox(16, 'Error', 'Es wurde kein Ordner ausgwählt', 5)
    Exit (0)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Global $filter = InputBox('Filter', 'Bitte den Filter definieren z.B. jpg : ', 'jpg')

    [/autoit] [autoit][/autoit] [autoit]

    RunWait('"' & @ComSpec & '" /c dir *.' & $filter & ' /S /B > ' & $tempFile, $folder, @SW_HIDE)

    [/autoit] [autoit][/autoit] [autoit]

    If Not _FileReadToArray($tempFile, $lines_A) Then
    MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($lines_A, "ALLE") ; zur Anzeige der gefundenen Dateien

    [/autoit] [autoit][/autoit] [autoit]

    For $i = UBound($lines_A) - 1 To 1 Step - 1
    If (FileGetSize($lines_A[$i]) / 1024) > $fileSize Then _ArrayDelete($lines_A, $i)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $lines_A[0] = UBound($lines_A)

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($lines_A, "kleiner der Grenze: " & $fileSize) ; zur Anzeige der übrig gebliebenen Dateien

    [/autoit] [autoit][/autoit] [autoit]

    For $i = UBound($lines_A) - 1 To 1 Step - 1
    ;FileDelete($lines_A[$i]
    Next

    [/autoit]

    So long,

    Mega