Mit diesem kleinen program kan man seinen Musikordner auswählen und bekommt angezeigt, wie viele Stundne, Minuten und Sekunden Musik sich in dem Ordner befinden.
Es ist eigentlich nur aus langeweile entstanden.....wenn es bei windows XP zu problemen kommt, liegt das an $test=_GetExtProperty($hFilesFolders[$r], 21) dort müsst ihr eventuell einen anderen Parameter als 21 eintragen.
Spoiler anzeigen
#include<array.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]local $path = FileSelectFolder("Wähle einen Ordner aus.", "")
[/autoit] [autoit][/autoit] [autoit]$hFilesFolders = FileListToArrayX($path)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$sekunden=0
[/autoit] [autoit][/autoit] [autoit]for $r=1 to ubound($hFilesFolders)-1
if stringright($hFilesFolders[$r],4) = ".mp3" then
$test=""
if @OSVersion = "WIN_VISTA" then
$test=_GetExtProperty($hFilesFolders[$r], 27)
Else
$test=_GetExtProperty($hFilesFolders[$r], 21)
endif
$zeit=stringsplit($test,":",1)
$sekunden=$sekunden+$zeit[3]
$sekunden=$sekunden+$zeit[2]*60
$sekunden=$sekunden+$zeit[1]*3600
endif
Next
$stunden=int($sekunden/3600)
$sekunden=$sekunden- $stunden*3600
$minuten=int($sekunden/60)
$sekunden=$sekunden- $minuten*60
msgbox(0,"Die Länge ist:",$stunden &":"& $minuten &":"& $sekunden)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];===============================================================================
; Function Name: GetExtProperty($sPath,$iProp)
; Description: Returns an extended property of a given file.
; Parameter(s): $sPath - The path to the file you are attempting to retrieve an extended property from.
; $iProp - The numerical value for the property you want returned. If $iProp is is set
; to -1 then all properties will be returned in a 1 dimensional array in their corresponding order.
; The properties are as follows:
; Name = 0
; Size = 1
; Type = 2
; DateModified = 3
; DateCreated = 4
; DateAccessed = 5
; Attributes = 6
; Status = 7
; Owner = 8
; Author = 9
; Title = 10
; Subject = 11
; Category = 12
; Pages = 13
; Comments = 14
; Copyright = 15
; Artist = 16
; AlbumTitle = 17
; Year = 18
; TrackNumber = 19
; Genre = 20
; Duration = 21
; BitRate = 22
; Protected = 23
; CameraModel = 24
; DatePictureTaken = 25
; Dimensions = 26
; Width = 27
; Height = 28
; Company = 30
; Description = 31
; FileVersion = 32
; ProductName = 33
; ProductVersion = 34
; Requirement(s): File specified in $spath must exist.
; Return Value(s): On Success - The extended file property, or if $iProp = -1 then an array with all properties
; On Failure - 0, @Error - 1 (If file does not exist)
; Author(s): Simucal ([email='Simucal@gmail.com'][/email])
; Note(s):
;
;===============================================================================
Func _GetExtProperty($sPath, $iProp)
Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
$iExist = FileExists($sPath)
If $iExist = 0 Then
SetError(1)
Return 0
Else
$sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
$sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, "\", 0, -1)))
$oShellApp = ObjCreate ("shell.application")
$oDir = $oShellApp.NameSpace ($sDir)
$oFile = $oDir.Parsename ($sFile)
If $iProp = -1 Then
Local $aProperty[35]
For $i = 0 To 34
$aProperty[$i] = $oDir.GetDetailsOf ($oFile, $i)
Next
Return $aProperty
Else
$sProperty = $oDir.GetDetailsOf ($oFile, $iProp)
If $sProperty = "" Then
Return 0
Else
Return $sProperty
EndIf
EndIf
EndIf
EndFunc ;==>_GetExtProperty
Func FileListToArrayX($FLTAXstartDir)
Local $FLTAXstring = ""
;Retrieve array of all folders
$folderArray = RecursiveFolderSearch ($FLTAXstartDir)
;Loop through all folders
For $X = 1 To $folderArray[0]
$search = FileFindFirstFile($folderArray[$X] & "\*.*")
If @error Then ContinueLoop
;Search through all files and folders in directory
While 1
$next = FileFindNextFile($search)
If @error Then ExitLoop
;Skip folders, append to strin of all filenames
If Not StringInStr(FileGetAttrib($folderArray[$X] & "\" & $next), "D") Then $FLTAXstring &= $folderArray[$X] & "\" & $next & "*"
WEnd
FileClose($search)
Next
;Split string into array and return it
Return StringSplit(StringTrimRight($FLTAXstring, 1), "*")
EndFunc;==>FileListToArrayX
Func RecursiveFolderSearch ($startDir, $depth = 0)
If $depth = 0 Then Global $RFSstring = $startDir & "*"
$search = FileFindFirstFile($startDir & "\*.*")
If @error Then Return
;Search through all files and folders in directory
While 1
$next = FileFindNextFile($search)
If @error Then ExitLoop
;If folder, recurse
If StringInStr(FileGetAttrib($startDir & "\" & $next), "D") Then
;Append foldername to string
$RFSstring &= $startDir & "\" & $next & "*"
;Recurse
RecursiveFolderSearch ($startDir & "\" & $next, $depth + 1)
EndIf
WEnd
FileClose($search)
If $depth = 0 Then Return StringSplit(StringTrimRight($RFSstring, 1), "*")
EndFunc;==>RecursiveFolderSearch