_GetFileList um Ausgabe von Datum und grösse erweitern ??

  • Hallo...

    wie kann man die Funktion "_GetFileList"

    Spoiler anzeigen
    [autoit]


    Func _GetFileList($T_DIR,$T_MASK,$DIR_ONLY=0)
    Dim $N_DIRNAMES[200000] ; max number of directories that can be scanned
    Local $N_DIRCOUNT = 0
    Local $N_FILE
    Local $N_SEARCH
    Local $N_TFILE
    Local $N_OFILE
    Local $T_FILENAMES
    Local $T_FILECOUNT
    Local $T_DIRCOUNT = 1
    ; check Filemask \ for empty File-Array by GetDirOnly
    If $T_MASK = "n" Then $T_MASK = "*.no"
    ; remove the end \ If specified
    If StringRight($T_DIR,1) = "\" Then $T_DIR = StringTrimRight($T_DIR,1)
    $N_DIRNAMES[$T_DIRCOUNT] = $T_DIR
    ; Exit if base dir doesn't exists
    If Not FileExists($T_DIR) Then Return 0
    ; keep on looping until all directories are scanned
    While $T_DIRCOUNT > $N_DIRCOUNT
    $N_DIRCOUNT = $N_DIRCOUNT + 1
    ; find all subdirs in this directory and save them in a array
    $N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\*.*")
    While 1
    $N_FILE = FileFindNextFile($N_SEARCH)
    If @error Then ExitLoop
    ; skip these references
    If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 Then
    $T_DIRCOUNT = $T_DIRCOUNT + 1
    $N_DIRNAMES[$T_DIRCOUNT] = $N_TFILE
    EndIf
    Wend
    FileClose($N_SEARCH) ; find all Files that mtach the MASK
    $N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\" & $T_MASK )
    If $N_SEARCH = -1 Then ContinueLoop
    While 1
    $N_FILE = FileFindNextFile($N_SEARCH)
    If @error Then ExitLoop
    ; skip these references
    If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0 Then
    $T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
    $T_FILECOUNT = $T_FILECOUNT + 1
    ;MsgBox(0,'filecount ' & $T_FILECOUNT ,$N_TFILE)
    EndIf
    Wend
    FileClose($N_SEARCH)
    Wend
    If $DIR_ONLY = 0 Then
    $T_FILENAMES = StringTrimRight($T_FILENAMES,1)
    $N_OFILE = StringSplit($T_FILENAMES,@CR)
    Return( $N_OFILE )
    Else
    ReDim $N_DIRNAMES[$N_DIRCOUNT+1]
    $N_DIRNAMES[0] = $N_DIRCOUNT
    Return $N_DIRNAMES
    EndIf
    EndFunc ;==>_GetFileList

    [/autoit]

    um die Möglichkeit erweitern, zusätzlich das Dateidatum UND die Dateigrösse mit auszugeben.

    Ich möchte das Ergebnis in eine 3Spaltige (Pfad | Grösse (kb) | Datum) ListView zurück geben. (wie in der Detailansicht im Explorer)

    Kann mir da jemand Helfen ???

    Vielen dank schonmal im voraus

    Marco

  • Hallo!

    hier mal ein kleiner Versuch von mir, Akku ist aber schon ziemlich leeer heute.

    wie gefällt dir das???
    =========================================


    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    ; Datum und Größe rausholen
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0 Then
    $T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
    $T_FILECOUNT = $T_FILECOUNT + 1
    $T_FILESIZE=FileGetSize($N_TFILE)
    if $T_FILESIZE > 1048576 then
    $HILF_FILESIZE = $T_FILESIZE / 1024 /1024
    $HILF1_FILESIZE = StringFormat("%.2f",$HILF_FILESIZE)
    $FORMAT_FS=@TAB & $HILF1_FILESIZE & " " & " MB"
    Else
    $HILF_FILESIZE = $T_FILESIZE / 1024
    $HILF1_FILESIZE = StringFormat("%.2f",$HILF_FILESIZE)
    $FORMAT_FS=@TAB & $HILF1_FILESIZE & " " & " KB"
    EndIf
    $t = FileGetTime( $N_TFILE, 1)

    If Not @error Then
    ; $yyyymd = $t[0] & "/" & $t[1] & "/" & $t[2]
    $Format_Datum= @TAB & $t[2] & "." & $t[1] & "." & $t[0]
    EndIf
    ; Datum Ende


    MsgBox(0,'filecount xx' & $T_FILECOUNT ,$N_TFILE & $FORMAT_FS & $FORMAT_Datum)
    EndIf

    ============================================


    Gruss


    German
    genannt: DER INTEGRATOR

    PS: Deinen Code hab ich jetzt aber auch gemopst, gefällt mir gut.