Ordner mit Unterordner in Array einlesen dann nach *.tiff Dateien suchen und wieder in neuem Ordner ausgeben

  • Hallo zusammen,

    Ich habe ein Problem wo ich einfach nicht weiter komme. Es geht um folgendes

    Ordnerstrucktur

    Rechnungseingang
    TIF.XSM
    Bild001.tif
    Bild002.tif

    TIF001.XSM
    Bild001.tif
    Bild002.tif

    TIF002.XSM
    Bild001.tif
    Bild002.tif

    Alle Ordner/Unterordner im Verzeichnis Rechnungseingang lese ich in ein Array ein was ja auch funktioniert. Jetzt will ich jeden Ordner im Array nach Tif Dateien succhen und die dann nummeriert in einen neuen Ordner ausgeben, das soll dann so aussehen.

    Rechnungseingang
    Ordnername
    Bild001.tif
    Bild002.tif
    Bild003.tif
    usw....

    hier mein biseriger Code

    [autoit]

    #include<file.au3>
    #Include <Array.au3>

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

    dim $folder, $path, $dir
    dim $x, $i, $test, $file

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

    $folder = "C:\Intel\Rechnungseingang"
    $search = FileFindFirstFile("*.tif")

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

    ;msgbox("", "test", $folder)

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

    $dir = _FileListToArray($folder, '*');im zweiten parameter könntest du dann den filetyp z.b. '*.txt' definieren...

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

    _ArrayDisplay($dir,"test")
    MsgBox(0,"Anzahl der Daten in "&$folder,$dir[$x])

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

    For $i = 1 To $dir[$x]

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

    msgbox("", "Ausgabe", $dir[$i])

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

    $file = FileFindNextFile($dir[$i])
    ;If @error Then ExitLoop

    MsgBox(4096, "File:", $dir[$x])

    Next

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

    ;If @Error=1 Then
    ; MsgBox (0,"","No Files\Folders Found.")
    ; Exit
    ;EndIf
    ;_ArrayDisplay($FileList,"$FileList")

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

    Wo liegt mein Denkfehler ??

    Einmal editiert, zuletzt von bitworker (25. Januar 2011 um 12:51)

  • So meinst du?

    Spoiler anzeigen
    [autoit]

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

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

    $sPath_Src = @ScriptDir & "\Test"
    $sPath_Dst = @ScriptDir & "\Destination"

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

    $aFiles = _FileListToArrayRecursiv($sPath_Src, "Bild*.tif", 1)

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

    For $i = 1 To $aFiles[0]
    FileCopy($sPath_Src & "\" & $aFiles[$i], $sPath_Dst & "\Bild" & StringFormat("%03d", $i) & ".tif", 8)
    Next

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

    ; #FUNCTION# ======================================================================================
    ; Name ..........: _FileListToArrayRecursiv()
    ; Description ...: Findet Dateien in einem Verzeichnis und allen Unterverzeichnissen
    ; Syntax ........: _FileListToArrayRecursiv($sPath, [$sFilter = "*"])
    ; Parameters ....: $sPath - Verzeichnispfad in dem gesucht werden soll.
    ; $sFilter - [optional] Dateinamenfilter (z.B. "*.mp3"). Wildcards werden unterstützt.
    ; $iFlag - [optional] 0 = Dateien und Ordner auflisten.
    ; 1 = Nur Dateien auflisten.
    ; 2 = Nur Ordner auflisten.
    ; Return values .: Success - Return Array with Files ($Array[0] = Count)
    ; Failure - Return 0
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Benötigt #include <File.au3>
    ; =================================================================================================
    Func _FileListToArrayRecursiv($sPath, $sFilter = "*", $iFlag = 0)
    Local $aFiles = _FileListToArray($sPath, $sFilter, $iFlag)
    If Not IsArray($aFiles) Then
    Local $aFiles[1]
    $aFiles[0] = 0
    EndIf

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

    Local $aFolders = _FileListToArray($sPath, "*", 2)
    If Not IsArray($aFolders) Then
    If $aFiles[0] = 0 Then Return 0
    Else
    $bResult = False
    For $i = 1 To $aFolders[0]
    $aSearchTmp = _FileListToArrayRecursiv($sPath & "\" & $aFolders[$i], $sFilter, $iFlag)
    If IsArray($aSearchTmp) Then
    $bResult = True
    ReDim $aFiles[$aFiles[0] + $aSearchTmp[0] + 1]
    For $j = 1 To $aSearchTmp[0]
    $aFiles[$aFiles[0] + $j] = $aFolders[$i] & "\" & $aSearchTmp[$j]
    Next
    $aFiles[0] += $aSearchTmp[0]
    EndIf
    Next
    EndIf

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

    Return $aFiles
    EndFunc

    [/autoit]
  • Danke für die schnelle Rückmeldung das Script bringt keinen Fehler aber der Ordner Destination ist leer vielleicht kannst du mir nochmal helfen danke gruß bitworker