Récursivité ?
Récursivité ?
Bonjour a tous,
Je ne sais pas comment on fait pour lister tous les fichiers d'un certain type dans tous les sous repertoires d'un chemin. J'ai bien cherché sur le forum mais Dobro a viré son post...
Je ne sais pas comment on fait pour lister tous les fichiers d'un certain type dans tous les sous repertoires d'un chemin. J'ai bien cherché sur le forum mais Dobro a viré son post...
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Récursivité ?
Salut SPH.
Tout est dans l'aide...
Ton projet avance ?
Tout est dans l'aide...
Code : Tout sélectionner
If ExamineDirectory(0,"C:\","*.jpg")
While NextDirectoryEntry(0)
If DirectoryEntryType(0)=#PB_DirectoryEntry_File
...
EndIf
Wend
FinishDirectory(0)
EndIf
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Re: Récursivité ?
Code : Tout sélectionner
Procedure examine(path.s)
Protected dir.i
If Right(path, 1) <> "\"
path + "\"
EndIf
dir = ExamineDirectory(#PB_Any, path, "*.*")
If dir
While NextDirectoryEntry(dir)
Debug path + DirectoryEntryName(dir)
If DirectoryEntryType(dir) = #PB_DirectoryEntry_Directory And DirectoryEntryName(dir) <> "." And DirectoryEntryName(dir) <> ".."
examine(path + DirectoryEntryName(dir))
EndIf
Wend
FinishDirectory(dir)
EndIf
EndProcedure
Re: Récursivité ?
Vos codes ne permettent pas de rentrer dans tous les repertoires. Je me demande si je ne vais pas eliminer cette option finalement...
Doucement mais surementboddhi a écrit :Ton projet avance ?
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Re: Récursivité ?
Heu désolé mais mon code permet de voir tous les sous repertoires ...SPH a écrit :Vos codes ne permettent pas de rentrer dans tous les repertoires.
Re: Récursivité ?
Ce que j'appelle peut etre a tord la recursivité, c'est de partir de C:/ et d'arriver a fouiller dans c:/tmp/001/k/replepiaf31 a écrit :Heu désolé mais mon code permet de voir tous les sous repertoires ...SPH a écrit :Vos codes ne permettent pas de rentrer dans tous les repertoires.
Nan mais laisse tomber, je n'en ai pas besoin en fait. Merci
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Récursivité ?
C'est bien la récursivité.SPH a écrit :Ce que j'appelle peut etre a tord la recursivité, c'est de partir de C:/ et d'arriver a fouiller dans c:/tmp/001/k/rep
C'est peut-être ça que tu cherches.
Code : Tout sélectionner
Procedure Scan_Directory(Dir$, Pattern$ = "*.*", Id = 0)
If Right(Dir$, 1) <> "\" : Dir$ + "\" : EndIf
If ExamineDirectory(Id, Dir$, "")
While NextDirectoryEntry(Id)
Nom$ = DirectoryEntryName(Id)
Type = DirectoryEntryType(Id)
Select Type
Case #PB_DirectoryEntry_File
FullName$ = Dir$ + Nom$
If GetExtensionPart(FullName$) = Pattern$
Debug FullName$
EndIf
Case #PB_DirectoryEntry_Directory
If Nom$ <> "." And Nom$ <> ".."
FullName$ = Dir$ + Nom$
Debug FullName$
Scan_Directory(FullName$, Pattern$, Id + 1)
EndIf
EndSelect
Wend
FinishDirectory(Id)
ProcedureReturn
EndIf
EndProcedure
Mon_Chemin$ = "C:\Program Files\PureBasic\"
Mon_Extension$ = "pb"
Scan_Directory(Mon_Chemin$, Mon_Extension$, 0)
Re: Récursivité ?
OU encore... De je ne sais plus qui ???

Code : Tout sélectionner
; *******************************************************************
; ARBORESCENCES - Liste de répertoire et fichiers...
;
; *******************************************************************
#ImgFile = 1
#ImgFold = 2
;
Global Tree_0
;{- Images du TreeGadget
If CreateImage ( #ImgFile , 16, 16)
StartDrawing ( ImageOutput ( #ImgFile ))
Box (0, 0, 16, 16, $8FF7F7)
DrawText (3,0, "F" , $0306F8,$86F7F7)
StopDrawing ()
EndIf
;
If CreateImage ( #ImgFold , 16, 16)
StartDrawing ( ImageOutput ( #ImgFold ))
Box (0, 0, 16, 16, $8FF7F7)
DrawText (3,0, "D" , $FF0000,$86F7F7)
StopDrawing ()
EndIf
;}-
;-Procédures Recursive...
Procedure ListeFichiers(NumDir.l, NameDir.s, Ext.s)
File.s : NameDir = Trim (NameDir)
; Vérification de la chaine
If Right (NameDir,1) = "." : NameDir = Left (NameDir, Len (NameDir)-1) : EndIf
If Right (NameDir,1)<> "\" : NameDir+ "\" : EndIf
; Vérification de l'extension
If Right (Ext, 1) = "*" Or Ext = ""
NoExt = #True
Else
If FindString (Ext, "." , 1)
Ext = GetExtensionPart (Ext) : NoExt = #False
Else
Ext = Ext : NoExt = #False
EndIf
EndIf
If ExamineDirectory (NumDir, NameDir, "*.*" )
While NextDirectoryEntry (NumDir)
File = DirectoryEntryName (NumDir)
Select DirectoryEntryType (NumDir)
Case #PB_DirectoryEntry_File
Select NoExt
Case #True
; ********** Avec extension *********
AddGadgetItem (Tree_0, -1, File, ImageID ( #ImgFile ), NumDir)
; ***********************************
Case #False
;*********** Sans Extension *********
If GetExtensionPart (File) = Ext
AddGadgetItem (Tree_0, -1, File, ImageID ( #ImgFile ), NumDir)
EndIf
; ***********************************
EndSelect
Case #PB_DirectoryEntry_Directory
If DirectoryEntryName (NumDir) <> "." And DirectoryEntryName (NumDir) <> ".."
; ***********************************
AddGadgetItem (Tree_0, -1, DirectoryEntryName (NumDir), ImageID ( #ImgFold ), NumDir)
;
; ************ ICI ***********************
ListeFichiers(NumDir +1, NameDir + File, Ext)
;
EndIf
EndSelect
Wend
FinishDirectory (NumDir)
EndIf
EndProcedure
If OpenWindow (0, 5, 5, 400, 543, "Tree" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
Tree_0 = TreeGadget ( #PB_Any , 5, 5, 390, 535)
EndIf
; FICHIERS CONCERNES ou répertoire de départ
;
Chem$ = "C:\0 0 PureBasic46\PureBasic" ; <<==== ICI La base du répertoire de la recherche
ExtensionA_Chercher$ = "*.pb" ; <<==== ICI L'extension ou base de fichier a rechercher
;
ListeFichiers(0, Chem$, ExtensionA_Chercher$)
;
Repeat
Event = WaitWindowEvent ()
Until Event = #PB_Event_CloseWindow
End
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-