Ordner + Unterordner nach .avi suchen lassen und kopieren

  • Hallo ,

    ich hab ein Problem das ich nicht lösen kann, hab zwar schon einige beispiele gefunden aber nichts was hilfreich war , bzw was ich nicht ganz verstanden habe.

    Ich will folgendes machen, ich brauche ein Script das mir einen Ordner samt Unterordner nach .avi Dateien sucht und anschließen kopiert.

    also ungefair so

    Hauptordner
    |
    *.avi
    Unterordner1
    |
    *.avi
    |
    Unterordner2

    |
    *.avi
    |

    Unterordner3
    |
    *.avi

    usw.

    ich scheitere daran das ich es nicht hinbekommen das er mir die Unterordner mit durchsucht.

  • Hallo, such mal nach _RecFileListToArray von Melba23. Ich glaube ich habe es auf der englischen Seite gefunden.

  • danke für eure Antworten :)

    ich habe ein Script mit der Suche gefunden das Funktioniert , allerdings findet er immer nur die erste gefundene datei , also ist es nicht für mich zu gebrauchen.

    Spoiler anzeigen

    Func _RecursiveFileSearch($FILE, $SEARCHFOLDER)
    Global $PathFound = ""
    Dim $Fehler = 0
    If $FILE = "" Then
    SetError(1)
    $Fehler += 1
    EndIf
    If $SEARCHFOLDER = "" Then
    SetError(1)
    $Fehler += 2
    EndIf
    If @error Then Return $Fehler
    $FSO = ObjCreate("Scripting.FileSystemObject")
    ShowSubfolders( $FSO.GetFolder($SEARCHFOLDER), $FILE )
    If $PathFound = "" Then
    SetError(1)
    $Fehler = 4
    Return $Fehler
    Else
    SetError(0)
    EndIf
    Return $PathFound
    EndFunc
    Func ShowSubFolders($Folder, $FILE)
    For $Subfolder in $Folder.SubFolders
    If FileExists($Subfolder.Path & "\" & $FILE) Then
    $PathFound = $Subfolder.Path & "\" & $FILE
    ExitLoop
    EndIf
    ShowSubFolders( $Subfolder, $FILE )
    Next
    EndFunc
    ; ==>_RecursiveFileSearch


    bzw wird man wohl, so wie ich gelesen habe, mit "" FileFindFirstFile - FileFindNextFile "" noch was machen müssen


    und der andere vorschlag geht irgendwie nicht, der bringt da eine Fehlermeldung


    ==> Unknown function name.:
    $aArray = _RecFileListToArray($sAutoItDir, "*|", 0, 1, 1)
    $aArray = ^ ERROR

    es fehtl wohl ein include , bzw kann der mit dem _RecFileListToArray nichts anfangen

  • Wenn du die RecFileListToArray.au3 in dein Autoit Include Verzeichnis speicherst und es so ausführst geht es doch ganz gut ;)

    [autoit]


    #include <RecFileListToArray.au3>
    #include <Array.au3>; Wird nur für die _Arraydisplay gebraucht
    $sPath = @scriptdir; oder wo du halt willst

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

    $aArray = _RecFileListToArray($sPath, "*.avi", 1, 1, 0, 2)
    _ArrayDisplay($aArray)

    [/autoit]
  • In meinem Script lese ich damit alle AVI und M4A Dateien aus, sollte auch bei dir gehen.

    $MyArrFiles = _RecFileListToArray("d:\MeineDateien\Alles\","*.avi; *.m4a",1,1,1,2)

    Unter D:\MeineDateien\Alles liegen noch etliche Unterordner und mit der Funktion werden alle Dateien inkl. Pfad, komplett nicht relativ,
    ins Array geschrieben und sortiert

    Also:

    Der erste Parameter ist der Pfad, ist klar. Der zweite wie oben zu sehen ist, sind die Dateiendungen. Wenn mehrere gesucht werden, dann mit Semikolon trennen.
    Dann folgt bei mir die "1" das nur Dateien gesucht werden. Weiter die"1" damit alle Unterordner durchsucht werden, bei dir ist der Default wert "0" = Keine Suche in Unterordner
    Der dritte Parameter "1" ist sortierte Ausgabe in Array und der letzte Parameter "2" besagt das der komplette Pfad ausgegeben wird
    Ist aber im UDF Header sehr gut beschrieben, wenn auch nur in englisch
    Hoffe konnte Dir helfen

  • Ach ja, wie Schnitzel schon angemerkt hatte. Die UDF solltest Du schon im AutoIT include Verzeichnis oder im ScriptDir haben.

  • lol :rolleyes: jetzt hab ich wieder was gelernt, ich hab bis heute nicht gewusst das ich auch include´s hinzufügen kann ... :D

    und du hast recht , so geht es wunderbar  :thumbup:


    Danke :)