Ordnergröße ermitteln
Verfasst: 14.09.2010 18:49
...wie geht das? FileSize() gibt -2 zurück.
Gruß, Mok.
Gruß, Mok.
Bei Strukturen, wie dem Windows-Ordner wartet man da ja Wochen...STARGÅTE hat geschrieben:Rekursive, alle unterordner durchsuchen und dann die Summe über alle Dateigrößen bilden.
Code: Alles auswählen
Procedure.q DirectorySize(Directory$, *Files.Integer, *Dirs.Integer)
Protected Size.q
Protected Directory = ExamineDirectory(#PB_Any, Directory$, "*")
If Directory
While NextDirectoryEntry(Directory)
Select DirectoryEntryType(Directory)
Case #PB_DirectoryEntry_Directory
If DirectoryEntryName(Directory) <> "." And DirectoryEntryName(Directory) <> ".."
*Dirs\i + 1
Size + DirectorySize(Directory$+DirectoryEntryName(Directory)+"\", *Files, *Dirs)
EndIf
Case #PB_DirectoryEntry_File
*Files\i + 1
Size + DirectoryEntrySize(Directory)
EndSelect
Wend
FinishDirectory(Directory)
EndIf
ProcedureReturn Size
EndProcedure
Size.q = DirectorySize("C:\", @Files, @Dirs)
Text$ = StrF(Size/1024/1024,3)+" MB"+#LF$
Text$ + Str(Files)+" Dateien"+#LF$
Text$ + Str(Dirs)+" Ordner"
MessageRequester("Festplatte", Text$)
Allerding nur beim 1. mal, danach ist es schneller, weil die Daten zu den Ordner temporär gespeichert werden.---------------------------
Festplatte
---------------------------
30285.389 MB
123173 Dateien
11576 Ordner
---------------------------
OK
---------------------------