- 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
#include<array.au3>
[/autoit] [autoit][/autoit] [autoit]$Path = @ScriptFullPath ; @ScriptDir
$ret = _FileInfoExtended($Path)
_ArrayDisplay($ret)
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