Anzahl der Dateien in einem Ordner

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Anzahl der Dateien in einem Ordner

Beitrag von marcelx »

Hallo,

Wie finde ich die Anzahl der Dateien in einem Ordner?

Gruß
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Anzahl der Dateien in einem Ordner

Beitrag von RSBasic »

ExamineDirectory() und eine Variable, um die Dateien zu zählen.
Mit DirectoryEntryType() kannst du unterschieden zwischen Ordner (#PB_DirectoryEntry_Directory) und Dateien (#PB_DirectoryEntry_File).
Wenn du auch die Dateien in Unterverzeichnissen mitzählen möchtest, musst du deine Prozedur rekursiv abrufen, bis alle Unterordner ermittelt wurden.
Hilfsverzeichnisse "." und ".." musst du in deiner Abfrage ausschließen bzw. ignorieren.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

[Gelöst] Anzahl der Dateien in einem Ordner

Beitrag von marcelx »

Danke RSBasic für den Hinweis

Code: Alles auswählen

InitialPath$ = "C:\"
Directory$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath$)

Procedure.i CountFiles (sPath.s)
   Protected numFiles = 0
   Protected handle
   If Right(sPath, 1) <> "\"
      sPath + "\"
   EndIf
   
   handle = ExamineDirectory(#PB_Any, sPath, "*.*")
   If handle = 0
      ProcedureReturn  0
   EndIf
   
   While NextDirectoryEntry(handle)
     If DirectoryEntryType(handle) = #PB_DirectoryEntry_File
       numFiles + 1
     Else
       If DirectoryEntryName(handle) <> "." And DirectoryEntryName(handle) <> ".."
           numFiles + CountFiles(sPath + DirectoryEntryName(handle)) 
       EndIf
     EndIf
   Wend
   FinishDirectory(handle)
   
   ProcedureReturn numFiles
 EndProcedure
 
Debug CountFiles(Directory$)
Win-10, PB 5.31 (Windows - x86)
Antworten