Verzeichnisgröße (Directory Size) ermitteln
Verfasst: 31.10.2006 13:22
Code: Alles auswählen
Procedure.s FormatFileSize(Size.d)
Size / 1024
If Size < 1024 ; KiloByte
If Size < 100
size$ = StrD(Size,2) ; '3.21 KB'
ElseIf Size < 100
size$ = StrD(Size,1) ; '32.1 KB'
Else
size$ = StrD(Size,0) ; '321 KB'
EndIf
If Left(StringField(size$,2,"."), 1) = "0" : size$ = StringField(size$,1,".") : EndIf
ProcedureReturn size$+" KB"
ElseIf Size < 1048576 ; MegaByte
Size / 1024
If Size < 10
size$ = StrD(Size, 2) ; '6.54' MB'
ElseIf Size < 100
size$ = StrD(Size, 1) ; '65.4' MB
Else
size$ = StrD(Size, 0) ; '654' MB
EndIf
If Left(StringField(size$,2,"."), 1) = "0" : size$ = StringField(size$,1,".") : EndIf
ProcedureReturn size$+" MB"
Else ; GigaByte
Size / 1048576
If Size < 10
size$ = StrD(Size, 2) ; '1.23 GB'
ElseIf Size < 100
size$ = StrD(Size, 1) ; '12.3 GB'
Else
size$ = StrD(Size, 0) ; '123 GB'
EndIf
If Left(StringField(size$,2,"."), 1) = "0" : size$ = StringField(size$,1,".") : EndIf
ProcedureReturn size$+" GB"
EndIf
EndProcedure
Procedure.d GetDirSize(directory.s)
Define.d Sum = 0, Size
If Right(directory,1) <> "\" : directory + "\" : EndIf
UsedDirectory = ExamineDirectory(#PB_Any, directory, "*.*")
While NextDirectoryEntry(UsedDirectory)
entryname.s = DirectoryEntryName(UsedDirectory)
If entryname = "." Or entryname = ".." : Continue : EndIf
Select DirectoryEntryType(UsedDirectory)
Case #PB_DirectoryEntry_File
Size = DirectoryEntrySize(UsedDirectory)
Sum + Size
Case #PB_DirectoryEntry_Directory
Size = GetDirSize(directory+entryname)
Sum + Size
EndSelect
Wend
FinishDirectory(UsedDirectory)
ProcedureReturn Sum
EndProcedure
Dir$ = PathRequester("Bitte wählen Sie ein Verzeichnis aus", "C:\")
Size.d = GetDirSize(Dir$) : Debug Size
size$ = FormatFileSize(Size) : Debug size$
MessageRequester("Directory Size", "Directory: "+Dir$+Chr(10)+"Size: "+size$, #MB_OK|#MB_ICONINFORMATION)