Le programme n'a rien de compliquer mais ça peut servir. Je l'ai fait car j'en avais besion au boulot (d'ou la licence sur clic droit)
Code : Tout sélectionner
Global Dossier1.s, Dossier2.s
Procedure Copie(n, Dossier.s)
If Right(Dossier, 1) <> "\"
Dossier + "\"
EndIf
If ExamineDirectory(n, Dossier1 + Dossier, "*.*")
Repeat
FileType = NextDirectoryEntry()
If FileType = 2
Nom.s = DirectoryEntryName()
If Nom <> "." And Nom <> ".."
CreateDirectory(Dossier2 + Dossier + Nom)
Copie(n + 1, Dossier + Nom)
UseDirectory(n)
EndIf
EndIf
Until FileType = 0
EndIf
EndProcedure
OpenWindow(0, 0, 0, 250, 100, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Architecture de dossier")
CreateGadgetList(WindowID())
TextGadget(#pb_any, 5, 5, 240, 15, "Dossier à dupliquer")
StringGadget(0, 5, 20, 220, 20, "", #PB_String_ReadOnly)
ButtonGadget(1, 225, 20, 20, 20, "...")
TextGadget(#pb_any, 5, 40, 240, 15, "Dossier de destination")
StringGadget(2, 5, 55, 220, 20, "", #PB_String_ReadOnly)
ButtonGadget(3, 225, 55, 20, 20, "...")
ButtonGadget(4, 5, 75, 240, 20, "Lancer")
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadgetID()
Case 1
Txt.s = PathRequester("Dossier à dupliquer", Dossier1)
If Txt
Dossier1 = Txt
If Right(Dossier1, 1) <> "\"
Dossier1 + "\"
EndIf
SetGadgetText(0, Dossier1)
EndIf
Case 3
Txt.s = PathRequester("Dossier de destination", Dossier2)
If Txt
Dossier2 = Txt
If Right(Dossier2, 1) <> "\"
Dossier2 + "\"
EndIf
SetGadgetText(2, Dossier2)
EndIf
Case 4
If Dossier1 And Dossier2 And FileSize(Dossier1) = -2 And FileSize(Dossier2) = -2
Copie(0, "")
MessageRequester("Architecture de dossier", "Recopie de l'architecture du dossier terminée.")
Else
MessageRequester("Architecture de dossier", "Veuillez remplir tous les champs.")
EndIf
EndSelect
ElseIf Event = #WM_RBUTTONDown
MessageRequester("Concepteur", "LSI Développements [BOUGUIN Régis]" + Chr(10) + "Programme gratuit pour l'usage personnel et en entreprise.")
EndIf
Until Event = #WM_Close