Verzeichnisstruktur in Array einlesen

  • Oscar , da stimme ich dir zu aber bei einem Unterschied von 14,5 Sekunden kann man glaube ich davon ausgehen das deines schneller ist :) , zudem habe ich beide Scripte jeweils 5x laufen lassen und immer den letzten Wert genommen ;)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Hallo,

    der Beitrag ist zwar schon ziemlich alt aber vielleicht hat ja noch jemand eine Idee.
    Ich habe heute auch ein Script geschrieben die mit alle Ordner in Arrys packt mit deren Erstelldatum. Ich musste feststellen das es obwohl es nichtmal viele Ordner sind doch lange dauert. Vielleicht hat jemand ne Idee wie ich das optimieren kann oder wie ich das schneller machen kann.

    Ich will die 10 neusten erstellten Ordner haben aus einer Verzeichnisstruktur die ein bestimmtest Zeichen enthalten (beliebigen String). Momentan mache ich das über ein 2D Array und einem UDF Multisort. Jemand ne bessere Idee?

  • Naja ist ja kein Gehvesuch, Funktioniert ja ;)
    Leider gehen die anderne Methoden nur wenn man die Sachen nicht sortiert haben möchte.

    [autoit]

    Func ReadDir( $dir ) Local $currdir, $i, $rdir, $currdir
    ; Ordner vorhanden if Not FileExists($dir) Then MsgBox(0, "ReadDir", "Der Ordner '"&$dir&"' existiert nicht")
    ; Ordner komplett lesen $rdir = _FileListToArray($dir, '*', 2);
    ;Nur wenn der Ordner noch unterordner enthält, if UBound($rdir) > 0 Then
    ;_ArrayDisplay($rdir) For $i=1 to $rdir[0]
    $currdir = $dir & '\' & $rdir[$i] ;MsgBox(0,'Ordner', $currdir)
    ; Enthält der Ordner ein . oder - dann Endordner $reg = StringRegExp($rdir[$i], "(\.|\-|\_)+", 0) if $reg Then ; Ist ein Endordner ; MsgBox(0,'Ordner', $rdir[$i] & " ist ein 'Endordner'") AddOrdner2Array( $currdir ) Else ; KEINE Endordner, weiter durchsuchen ReadDir( $currdir ) EndIf

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

    Next
    EndIf
    ;========== return true
    EndFunc

    [/autoit]


    Die Funktion AddOrdner2Array liest dann nur noch das Erstelldatum aus und packt das in meinem 2D Array wo dann auch immer Redim vor kommt.

  • Hi!


    versuch mal!

    Spoiler anzeigen
    [autoit]

    #include 'FileListRekursiv.au3'

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

    Local $a = _FileListToRekursiv('D:\', '*', 2, 0, 2, False, 0)
    ;oder _FileListToRekursiv('D:\', '*besonderes zeichen*', 2, 0, 2, False, 0)
    For $For In $a
    If StringRegExpReplace(FileGetTime($For, 1, 1) , '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$3.$2.$1 $4:$5:$6') = '23.06.2011 22:24:13' Then ConsoleWrite($For & @CR)
    Next

    [/autoit]

    Lg Kleiner

    Einmal editiert, zuletzt von Kleiner (20. Juli 2011 um 00:57)

  • Wenn du mir noch die include gibst probier ich es mal.
    Ist wohl eine andere als die auf der ersten Seite.


    EDIT: Eigentlich hat es sich schon erledigt. Ein komisches Phänomen. Wenn ich die .exe die mein Script enthält auf der Partition ausführe ist das in knapp einer Sekunden fertig. Wenn ich es auf der anderen Partition habe obwohl die andere verschlüsselt dauert es 18 Sekunden! Ist das selbe Script, nur die exe auf einer anderen Partition verschoben... (gleiche HDD).

    1 Sekunden ist akzeptabel ;)