PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Copie de fichiers
Copie de fichiers
Iniciado por quentin.sorindu44, 04,dic. 2018 14:38 - 2 respuestas
Publicado el 04,diciembre 2018 - 14:38
Bonjour,

Je souhaite copier les fichiers, les répertoires d'un répertoire source vers un répertoire cible. Or, lorsque je réalise mon "GO" et que je clique sur mon bouton pour le copie des fichiers, tous les fichiers sont bien copiés mais les fichiers qui étaient présents dans un répertoire apparaissent à la racine du répertoire cible. Ma question est : Comment puis-je faire pour que les répertoires ayant des fichiers à l'intérieur soient copiés ainsi que les fichiers à l'intérieur ?

Mon code :
sFichierCible est une chaîne
sListeFichierSource est une chaîne
sFichierSource est une chaîne
sCopieFichier est une chaîne


POUR i=1 _À_ TableOccurrence(TAB_Serveurs)

sListeFichierSource=fListeFichier(SAI_Déploiement..ValeurAffichée,frRécursif)

POUR TOUTE CHAÎNE sFichierSource DE sListeFichierSource SEPAREE PAR RC

sFichierCible=TAB_Serveurs[i]

SI PAS fFichierExiste(sFichierCible) ALORS
SI fTaille(sFichierSource)<>fTaille(sFichierCible) ET fDate(sFichierSource)<>fDate(sFichierCible) ALORS
sCopieFichier=fCopieFichier(sFichierSource,sFichierCible,frRécursif)
FIN
FIN
FIN
FIN

TAB_Serveurs contient le chemin cible et SAI_Deploiement le chemin source.
Merci d'avance pour l'aide que l'on m'apportera.

Cordialement,
Miembro registrado
134 mensajes
Publicado el 04,diciembre 2018 - 16:42
Bonjour,

Est-ce que ce code convient ?

i, iMax est un entier

iMax = TableOccurrence( TAB_Serveurs )
POUR i = 1 À iMax

fRepCopie( SAI_Déploiement, TAB_Serveurs[ i ], frRécursif )

FIN // POUR i = 1 À iMax
Mensaje modificado, 04,diciembre 2018 - 16:45
Publicado el 04,diciembre 2018 - 17:46
Bonjour,

J'ai un doute sur certains passages du code, comme par exemple le fait de contrôler la taille et la date alors que pour arriver là il ne faut pas que le fichier cible existe.

Mais c'est surement une coquille.

Voilà ce que tu peux faire pour garder la logique de ton code, si j'ai bien compris.

sFichierCible est une chaîne
sListeFichierSource est une chaîne
sFichierSource est une chaîne
sCopieFichier est une chaîne
sCheminAAjouter est une chaine


sRepSource est une chaine = "c:\temp\"
sRepDestination est une chaine ="c:\sav\"

sListeFichierSource=fListeFichier(sRepSource + "*.*",frRécursif)

POUR TOUTE CHAÎNE sFichierSource DE sListeFichierSource SEPAREE PAR RC

sCheminAAjouter = Remplace(sFichierSource ,sRepSource,"")


SI fFichierExiste(sRepDestination + sCheminAAjouter ) ALORS // le fichier cible existe
SI fTaille(sFichierSource )<>fTaille(sRepDestination + sCheminAAjouter) OU fDate(sFichierSource)<>fDate (sRepDestination + sCheminAAjouter) ALORS
sCopieFichier=fCopieFichier(sFichierSource,sRepDestination + sCheminAAjouter)
FIN
SINON // le fichier cible n'existe pas
sCopieFichier=fCopieFichier(sFichierSource,sRepDestination + sCheminAAjouter)
FIN
FIN
FIN