2 procedures que vous pouvez compiler en lib pour permettre de déplacer des fichiers ou dossiers
Code : Tout sélectionner
ProcedureDLL.l MoveFile(FichierSource$, FichierDestination$) ; Déplacer un fichier
; FichierSource$ = Fichier source
; FichierDestination$ = Fichier de destination
ProcedureReturn MoveFileEx_(FichierSource$, FichierDestination$, #MOVEFILE_REPLACE_EXISTING | #MOVEFILE_COPY_ALLOWED)
EndProcedure
ProcedureDLL.l MoveDirectory(DossierSource$, DossierDestination$, Filtre$, Recursif.l) ; Déplacer un dossier
; DossierSource$ = Dossier source
; DossierDestination$ = Dossier de destination
; Filtre$ = Permet de sélectionner quels types de fichiers doivent être retenus
; Recursif = 1 pour prendre en comptes les sous-dossiers, 0 sinon
Protected Type.l, Name.s
If Right(DossierSource$, 1) <> "\"
DossierSource$ = DossierSource$ + "\"
EndIf
If Right(DossierDestination$, 1) <> "\"
DossierDestination$ = DossierDestination$ + "\"
EndIf
CreateDirectory(DossierDestination$)
If ExamineDirectory(0, DossierSource$, Filtre$)
Repeat
Type.l = NextDirectoryEntry()
Name.s = DirectoryEntryName()
If Type = 1
Erreur = MoveFile(DossierSource$ + Name, DossierDestination$ + Name)
If Erreur = 0
ProcedureReturn 0
EndIf
ElseIf Type = 2 And Name <> "." And Name <> ".." And Recursif
Erreur = MoveDirectory(DossierSource$ + Name, DossierDestination$ + Name, Filtre$, Recursif.l)
If Erreur = 0
ProcedureReturn 0
EndIf
EndIf
Until Type = 0
DeleteDirectory(DossierSource$, "*.*", #PB_FileSystem_Force | #PB_FileSystem_Recursive)
Else
ProcedureReturn 0
EndIf
EndProcedure
