_FileDeleteAll()

  • hey leute...
    ich habe mir ein script geschrieben und hätte gerne ein feedback (lob oder kritik) von euch :)
    das script ist besonders praktisch wenn man viele dateine bzw. viel dateine eines types (z.b. mp3) löschen will. :)
    so muss man dann nicht immer alles absuchen wo sich dieser dateityp befindet um ihn dann manuell zu löschen. mann kann allerdings auch einen dateinamen angeben und danach suchen lassen ;)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ;==================================================================================================
    ; Function Name: _FileDeleteAll($s_path, $s_title = "_FileDeleteAll()", $i_delete_empty_folder = 0, $i_savedelete = 0, $s_filetype = False , $s_filename = False)
    ; Description: Delete all files
    ; Parameter(s): $a_path path where to search
    ; $s_title title of the window
    ; $$i_delete_empty_folder 0 = delete empty folders
    ; $i_savedelete 0 = normal delete
    ; 1 = save delete
    ; $s_filetype search and delete just one filetype e.g. .mp3
    ; $s_filename seach and delete just files with this name
    ; Version: v0.81 Build 2012-05-11 Beta
    ; Author(s): RedHead
    ;==================================================================================================

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

    Func _FileDeleteAll($s_path, $s_title = "_FileDeleteAll()", $i_delete_empty_folder = 0, $i_savedelete = 0, $s_filetype = False , $s_filename = False)
    Local $a_ergebnis[1] = [0]
    $a_ergebnis = _FileFindAll($s_path, $a_ergebnis, $s_filetype, $s_filename)
    If Not @error Then
    If Int($a_ergebnis[0]) <> 0 Then
    Local $i_onepercent = Round(Int($a_ergebnis[0])/100)
    ProgressOn($s_title, "Dateien werden gelöscht!", "", -1, -1, 2 + 16)
    For $i = 1 To $a_ergebnis[0]
    If _FileOrFolder($a_ergebnis[$i]) <> 1 Then
    If $i_savedelete = 0 Then
    FileDelete($a_ergebnis[$i])
    Else
    _FileDeleteSave($a_ergebnis[$i])
    EndIf
    _ArrayDelete($a_ergebnis, $i)
    EndIf
    For $m = 1 To 100
    If ($m * $i_onepercent) == $i Then ProgressSet(($m * 1), ($m * 1) & " %")
    Next
    Next
    ProgressSet(100, "100 %")
    Sleep(500)
    ProgressOff()
    If Not $s_filetype And $i_delete_empty_folder = 0 Then
    $a_ergebnis[0] = UBound($a_ergebnis, 1) - 1
    If Int($a_ergebnis[0]) <> 0 Then
    For $i = 1 To $a_ergebnis[0]
    If DirGetSize($a_ergebnis[$i]) = 0 Then
    DirRemove($a_ergebnis[$i])
    EndIf
    Next
    EndIf
    EndIf
    Else
    Return SetError(-3)
    EndIf
    Else
    Return @error
    EndIf
    EndFunc

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

    Func _FileDeleteSave($s_pfad)
    Local $h_file_open = FileOpen($s_pfad, 2)

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

    For $x = 0 To 800
    FileWrite($s_pfad, Random(100000, 9999999999))
    Next
    FileClose($h_file_open)
    FileDelete($s_pfad)
    EndFunc

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

    Func _FileOrFolder($s_pfad)
    Local $h_file_open = FileOpen($s_pfad)

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

    If FileClose($h_file_open) = 0 Then
    Return 1 ; Ordner
    Else
    Return 0 ; Datei
    EndIf
    EndFunc

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

    Func _FileFindAll($s_path, ByRef $a_found, $s_filetype = False, $s_filename = False)
    If $s_path == "" Or Not IsArray($a_found) Then Return SetError(-1)
    If StringRegExp(StringLeft($s_path, 1), "[a-zA-Z]") And StringMid($s_path, 2, 1) == ":" Then
    If StringRight($s_path, 1) <> "\" Then $s_path &= "\"
    Local $s_suchen, $s_weitersuchen
    If $s_filetype Then
    If StringLeft($s_filetype, 1) <> "*" Then $s_filetype = "*" & $s_filetype
    EndIf
    $s_suchen = FileFindFirstFile($s_path & "*")
    If $s_suchen == -1 Then Return SetError(-2)
    While 1
    $s_weitersuchen = FileFindNextFile($s_suchen)
    If @error Then ExitLoop
    If @extended Then _FileFindAll($s_path & $s_weitersuchen & "\", $a_found, $s_filetype, $s_filename)
    If $s_filetype And Not $s_filename Then
    If StringRight($s_weitersuchen, StringLen($s_filetype) - 1) = StringTrimLeft($s_filetype, 1) Then _ArrayAdd($a_found, $s_path & $s_weitersuchen)
    ElseIf $s_filename And Not $s_filetype Then
    If StringLeft($s_weitersuchen, StringLen($s_filename)) = $s_filename Then _ArrayAdd($a_found, $s_path & $s_weitersuchen)
    ElseIf $s_filename And $s_filetype Then
    If StringRight($s_weitersuchen, StringLen($s_filetype) - 1) = StringTrimLeft($s_filetype, 1) And _
    StringLeft($s_weitersuchen, StringLen($s_filename)) = $s_filename Then _ArrayAdd($a_found, $s_path & $s_weitersuchen)
    Else
    _ArrayAdd($a_found, $s_path & $s_weitersuchen)
    EndIf
    WEnd
    $a_found[0] = UBound($a_found) - 1
    Return $a_found
    Else
    Return SetError(-1)
    EndIf
    EndFunc

    [/autoit]