Erweiterte Dateiinfo (eine Datei od. alle eines Ordners)

    • Offizieller Beitrag

    Hi,
    ich kann mich erinnern, dass mal jemand nach einer Möglichkeit zur Abfrage der erweiterten Dateiinformationen gesucht hatte.
    Hier nun die entsprechende Funktion dafür.
    Einfach mit dem Pfad der Datei / des Ordners aufrufen, die Unterscheidung erfolgt in der Funktion automatisch.
    Zurückgegeben wird ein 34-spaltiges Array mit allen Informationsfeldern. Die erste Zeile enthält den Namen der Eigenschaft (sofern von MS hinterlegt).

    Spoiler anzeigen
    [autoit]

    #include<array.au3>

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

    $Path = @ScriptFullPath ; @ScriptDir
    $ret = _FileInfoExtended($Path)
    _ArrayDisplay($ret)

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

    Func _FileInfoExtended($FolderOrFile)
    If Not FileExists($FolderOrFile) Then Return SetError(1)
    Local $objShell = ObjCreate("Shell.Application")
    Local $arrHeaders[34], $Type = 'F'
    If StringInStr(FileGetAttrib($FolderOrFile), 'D') Then
    Local $objFolder = $objShell.Namespace($FolderOrFile)
    $Type = 'D'
    Else
    Local $objFSO = ObjCreate("Scripting.FileSystemObject")
    Local $objFile = $objFSO.GetFile($FolderOrFile)
    Local $FileName = $objFSO.GetFileName($objFile)
    Local $objFolder = $objShell.Namespace($objFSO.GetParentFolderName($objFile))
    EndIf
    Local $arRet[1][34]
    For $i = 0 To 33
    $arrHeaders[$i] = $objFolder.GetDetailsOf($objFolder.Items, $i)
    $arRet[0][$i] = $arrHeaders[$i]
    Next
    For $strFileName In $objFolder.Items
    If $Type = 'F' And $objFolder.GetDetailsOf($strFileName, 0) <> $FileName Then ContinueLoop
    ReDim $arRet[UBound($arRet)+1][34]
    For $i = 0 to 33
    $arRet[UBound($arRet)-1][$i] = $objFolder.GetDetailsOf($strFileName, $i)
    Next
    Next
    Return $arRet
    EndFunc

    [/autoit]
  • Nicht schecht, Bugfix, das gefällt mir,

    trifft sich gut, wollte grade ne Funktion suchen die den Interpret Albumtitel etc eines Songs zurückgibt =)

    greetz DJ

  • Hi BugFix!

    Als ich mein Archiv durchsuchte und deine _FileInfoExtended Funktion gefunden habe dachte die ist einfach zu langsam wenn es um große Folder geht!
    Ich habe mich gefragt warum kein Count genutzt wurde ich durfte dann schnell feststellen das Items kein Rückgabe Wert hat, da habe ich mich auf die Suche begeben und eine Lösung gefunden das, dass Redim keine Bremse mehr ist.

    Lösung:

    Spoiler anzeigen
    [autoit]

    $objItems = $objFolder.Items
    Local $arRet[$objItems.Count + 1][34]

    [/autoit]

    LG Kleiner

  • Hi!

    BugFix wie weit hast du getestet der DateiInfo´s du gibst ja ein 34 spalten Array ich habe gestern einfach mal Probiert mehr zu nehmen bei Win 7 habe ich die möglichkeit auf 250 Deteils zu kommen, was dann auch erheblich der Geschwindigkeit zu merken ist, nun gut die meisten infos sind nicht wirklich intresant, mich hat nur erstaunt das sooooo viele Infos möglich sind!


    LG kleiner

    • Offizieller Beitrag

    wie weit hast du getestet der DateiInfo´s du gibst ja ein 34 spalten Array


    Ich hatte in den Quellen nur die Angabe zu 34 Details gefunden. Kann sein, dass mit Win7 mehr hinzugekommen ist.

    Edit: Hierfindet ihr eine Listung der Details nach Betriebssystem.

  • Erkennt LEIDER LEIDER LEIDER keine Versteckten Dateien...

    Dennoch geile Funktion...

    Kannst du das Problem lösen..?


  • Danach habe ich bisher vergeblich gesucht. :wacko:

    Das Setzten der Dateiinformationen müsste im Grunde auch irgentwie gehen, vieleicht mal die AutoIt3Wrapper.au3 genauer unter die Lupe nehmen, da werden doch meines Wissens diese Informationen auch in die Datei geschrieben, zumindest in das eigene script.

    gruß
    Pre