[resolu] lister les sous répertoires..

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] lister les sous répertoires..

Message par Ar-S »

Salut,
dans l'exemple pb concernant ExamineDirectory()

Code : Tout sélectionner

 Directory$ = "C:\"   ; Énumère le contenu du répertoire C (Les sous-répertoires ne sont pas examinés) 
If ExamineDirectory(0, Directory$, "*.*")  
  While NextDirectoryEntry(0)
    If DirectoryEntryType(0) = #PB_DirectoryEntry_File
      Type$ = " [Fichier] "
    Else
      Type$ = " [Sous-répertoire] "
    EndIf
    
    Debug DirectoryEntryName(0) + Type$ + "- Taille en octet : " + Str(DirectoryEntrySize(0))
  Wend
  FinishDirectory(0)
EndIf
On voit que l'on peut au choix lister fichier et/ou dossier.

Je voudrais lister les dossiers mais incluant aussi les sous dossiers.

Dans la doc il est dit que Filtre$ permet de sélectionner quels types de fichiers doivent être retenus. Par exemple, un 'Filtre$' "*.*" ou "" retiendra tous les fichiers (et sous-dossiers) du répertoire .


Donc le code suivant devrait ne lister que les dossier et sous dossiers du répertoire mais il ne liste que les dossiers

Code : Tout sélectionner

Directory$ = "C:\"
If ExamineDirectory(0, Directory$, "*.*")  
  While NextDirectoryEntry(0)
    If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
      Debug LCase(DirectoryEntryName(0))
    EndIf
  Wend
  FinishDirectory(0)
EndIf
Que je mette "*.*" ou "" en filtre ça ne change rien.

Ma question est donc : comment lister aussi les sous dossiers des répertoires présents dans le dossier listé ?

Je pense que l'explication de la doc est un peu bancale, car j'en déduit qu'il est dit que ça liste les dossiers du dit répertoire, et non les sous-dossiers.
Dernière modification par Ar-S le mar. 10/nov./2009 13:10, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: lister les sous répertoires..

Message par Cls »

As - tu essayé avec "*" (sans point .) ?

Si tu veux lister les sous dossiers, il faut faire une fonction récursive.

Code : Tout sélectionner

Procedure Scan_Directory(source.s,  rek = 0) ; Source, indice 
  
  ; Ajoute les "\" 
  If Right(source, 1) <> "\" : source + "\" : EndIf
  
  If ExamineDirectory(rek, source, "*")
    While NextDirectoryEntry(rek) 
      ; Nom & Type répertoire source
      s_name.s = DirectoryEntryName(rek) : s_type = DirectoryEntryType(rek) 
      
      Select s_type          
        
        Case #PB_DirectoryEntry_File 
          s_fullname.s = source + s_name
          Debug s_fullname

          
        Case #PB_DirectoryEntry_Directory 
          If s_name <> "." And s_name <> ".." 
            Scan_Directory(source + s_name, rek + 1)
            
          EndIf      
      EndSelect 
    Wend 
    
    ;Libère la mémoire
    FinishDirectory(rek) 
    
  EndIf 
;
EndProcedure

Scan_Directory("D:\")
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: lister les sous répertoires..

Message par GallyHC »

Bonjour,

Si cela ne fonctionne pas comme tu veux je pense qu’une procédure récursive peu être bien…

Cordialment,
GallyHC

PS: je viens de voir que Cls propose aussi cela :) et il a ete plus rapide
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: lister les sous répertoires..

Message par Ar-S »

Ok, merci les gars, en modifiant un peu je devrais arriver à faire ce dont j'ai besoin. :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre