CopyDirectory()

Archive.
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

CopyDirectory()

Message par LavaLava »

J'ai quelques soucis avec cette fonction ...
J'ai lut, qu'en début d'année, Denis en avez de similaires mais depuis pas de réponses ...
Apparament, même sans attribut de lecture seule, cette fonction ne permet pas de recopier un dossier ... Il suffit même que le dossier destination existe et soit vide pour que la fonction ne marche plus !

N'étant pas sur qu'il n'y est pas du window la dessous, je joint un test simple :

Code : Tout sélectionner

Src$ = "C:\SRC\"
Dst$ = "C:\DST\"
If FileSize(Src$) <> -2
  Debug "Creation dossier source = " + Str( CreateDirectory(Src$) )
EndIf
If FileSize(Src$+"Test.txt") = -1
  F = CreateFile(#PB_Any,Src$+"Test.txt")
  If F
    CloseFile(F)
    Debug "Creation du fichier de test"
  EndIf
EndIf
If FileSize(Dst$) = -2
  Debug "Efface le dossier destination = " + Str( DeleteDirectory(Dst$,"*.*",#PB_FileSystem_Force) )
EndIf
Debug "Premiere Copie = " + Str(CopyDirectory(Src$,Dst$,"*.*"))
Debug "Deuxieme copie = " + Str(CopyDirectory(Src$,Dst$,"*.*"))
Debug "Copie avec Sytem_Force = " + Str(CopyDirectory(Src$,Dst$,"*.*",#PB_FileSystem_Force))
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Essayes de cette manière, ça fonctionne parfaitement.
Note que j'ai retiré le "\" final du dossier de destination.

SRC$ = " C:\SRC\ "
Dst$ = " C:\DST "
Resultat = CopyDirectory (SRC$, Dst$,"", #PB_FileSystem_Recursive )
If Resultat = 0
   MessageRequester (" IMPOSSIBLE DE COPIER "," LA COPIE DU DOSSIER SOURCE A ECHOUE ! ", #MB_ICONWARNING | #PB_MessageRequester_Ok )
Else
   If Resultat = 1
     MessageRequester (" SAUVEGARDE "," LA COPIE DU DOSSIER SOURCE EST REUSSIE ! "+Chr(13)+""+Chr(13)+" La copie a été placée sur C:\ ", #MB_ICONINFORMATION | #PB_MessageRequester_Ok )
   Endif
Endif
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

Merci Jacobus, cela va bien me dépanner ....
A noter que pour l'homogéinité du code on peut enlever le '\' de la source aussi.
Par contre il est dommage que GetPathPart() retourne le '\' final ...
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Par contre il est dommage que GetPathPart() retourne le '\' final
Ben non puisque en fait c'est bien le chemin que l'on veut en utilisant cette fonction. Si ensuite tu veux utiliser le dossier qui vient derrière tu sais que tu peux l'écrire ainsi : "Dossier\"

exemple :

Chemin$ = GetPathPart(FullPathName$)
Dossier$ = "Dossier\"
ou si c'est un fichier ==>> Fichier$ = "Fichier.extension"

donc Chemin$+Dossier$ = Emplacement du dossier
ou Chemin$+Fichier$ = Emplacement du fichier

Tu as de cette façon la possibilité d'utiliser l'un ou l'autre...si je me suis bien fait comprendre.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

Ma remarque sur le GetPathPart() est simplement venue du fait que dans mon prog j'utilise
CopyDirectory(GetPartPath(Source$),GetPartPath(Dest$),"*.*") car je pensais que le '\' final était obligatoire pour un dossier.

Comme aprés test de la plulpart des fonctions de gestions de fichier/dossier (CreateDirectory, DeleteDirectory, FileSize,...) acceptent la présence ou non du '\' final, j'ai a ce moment pensé que la syntaxe de pb était sans '\'.

Je trouve plus logique et lisible d'utiliser un '\' final, mais quelques soit le choix j'aimerais pouvoir utiliser un GetPathPart() en paramètre de CopyDirectory() !
Répondre