...wie geht das? FileSize() gibt -2 zurück.
Gruß, Mok.
Ordnergröße ermitteln
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Ordnergröße ermitteln
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Re: Ordnergröße ermitteln
Rekursive, alle unterordner durchsuchen und dann die Summe über alle Dateigrößen bilden.
u.u. musst du dann noch beachten das die Ordnerstruktur an sich Platz verbraucht.
(Daten-Größe und Größe auf Datenträger)
u.u. musst du dann noch beachten das die Ordnerstruktur an sich Platz verbraucht.
(Daten-Größe und Größe auf Datenträger)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Re: Ordnergröße ermitteln
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.
Zuletzt geändert von Mok am 14.09.2010 19:52, insgesamt 1-mal geändert.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Re: Ordnergröße ermitteln
@Mok, ja wenn du die größe von C:\ wissen willst, u.u. ja !
Aber wie solls denn sonst gehen ?, Windows speichert ja nicht von allen Ordner die Größe, weil die sich ja laufend ändert.
Folgender Code benötigt ca. 90s (ohne Debugger)
Aber wie solls denn sonst gehen ?, Windows speichert ja nicht von allen Ordner die Größe, weil die sich ja laufend ändert.
Folgender Code benötigt ca. 90s (ohne Debugger)
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
---------------------------
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr