Ordnergröße ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
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

Beitrag von Mok »

...wie geht das? FileSize() gibt -2 zurück.

Gruß, Mok.
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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Ordnergröße ermitteln

Beitrag von STARGÅTE »

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)
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
Benutzeravatar
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

Beitrag von Mok »

STARGÅTE hat geschrieben:Rekursive, alle unterordner durchsuchen und dann die Summe über alle Dateigrößen bilden.
Bei Strukturen, wie dem Windows-Ordner wartet man da ja Wochen...
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
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Re: Ordnergröße ermitteln

Beitrag von Jilocasin »

Die Wochen braucht der Explorer z.B. aber auch zum zusammenzählen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Ordnergröße ermitteln

Beitrag von STARGÅTE »

@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)

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$)
---------------------------
Festplatte
---------------------------
30285.389 MB
123173 Dateien
11576 Ordner
---------------------------
OK
---------------------------
Allerding nur beim 1. mal, danach ist es schneller, weil die Daten zu den Ordner temporär gespeichert werden.
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
Antworten