Copier répertoire dans un autre

Résolu
mthup - 1 juil. 2013 à 12:08
 mthup - 1 juil. 2013 à 13:12
Bonjour,

Actuellement étudiant et découvrant le VB6, je suis à la recherche d'une solution pour copier le contenu d'un dossier dans un autre.
Pour cela pas de problèmes, j'utilise un dirlistbox pour avoir le chemin de destination, et une fonction CopyFolder(Cheminsource,chemin destination) pour copier tous mes fichiers dans un autre dossier.

Mais cette fonction ne gère pas le fait qu'un des fichiers peu être déjà existant dans mon répertoire de destination. JE voudrais que les fichiers en double soit détecté et que l'utilisateur ait le choix soit de le remplacer, soit de ne pas le copier.


Merci d'avance

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2013 à 12:42
Salut

Ce que tu utilises n'est pas réellement du VB, mais du Script : FileSystemObject (FSO)
Pour faciliter la saisie du code, je te conseille d'ajouter le contrôle "Microsoft Scripting Runtime" qui est le fichier scrrun.dll (sous System32).
Tu trouveras l'aide des fonctions que propose cet objet dans l'aide de VB6.
CopyFolder possède une option permettant de préciser si tu autorise l'écrasement des données au cas où le répertoire existe déjà.
Si tu veux agir au niveau des fichiers, il faut descendre d'un cran et gérer le transfert de chaque fichier avec CopyFile (qui lui aussi a une option écrasement)
Une boucle de test (Do-Loop) pour chaque fichier contenu dans ton répertoire avec FileExists te permettra de gérer le questionnement de l'utilisateur pour savoir s'il faut faire ou pas la copie.

-1- Créer le répertoire de destination s'il n'existe pas encore (CreateFolder)
-2- Enumérer (boucle Do-Loop) chaque fichier du répertoire source avec GetFile
-3- Vérifier que le même nom existe ou pas (FileExists) dans le répertoire de destination -> Question utilisateur -> Copie avec écrasement ou pas

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
3
Utilisateur anonyme
1 juil. 2013 à 12:22
Bonjour,

La méthode CopyFolder possède une option 'Overwrite'
Syntaxe: object.CopyFolder source, destination[, overwrite]


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Merci les réponses,

Acive: Oui j'avais vu cette méthode, mais elle ne laisse pas la choix à l'utilisateur? soit on mets cette option a "true" soit à "false" si je ne me trompe pas.

Jack: Merci de ta réponse, je vais essayer de mettre cela en place!

Car en effet, je copie tous les fichiers d'un répertoire dans un autre, et je veut juste tester l’existence ou non des fichiers dans le nouveau répertoire.
0
Rejoignez-nous