Bonjour à vous.
Comment puis-je faire pour que la commande copyfile crée au besoin l'arborescence de la destination lors de la copie ?
Par exemple copyfile ("'\\Diskstation\webradio\radio\prod03.ogg","C:\Users\user\Documents\copie_sonore_cartoucheur\productions\prod03.ogg")
J'ai créé manuellement sous windows l'arborescence C:\Users\user\Documents\copie_sonore_cartoucheur
Mais pas le dossier 'productions'
Ainsi copyfile ne copie pas le fichier dans la destination car le dossier n'existe pas.
Il me faudrait une procédure qui analyse le chemin de destination et crée l'arborescence avant la copie...
Merci de votre aide, je continue à chercher.
CopyFile, création du chemin lors de la copie
Re: CopyFile, création du chemin lors de la copie
J'ai essayé :
Mais ce ne semble pas fonctionner pour l'instant.
Code : Tout sélectionner
Dossier$ = GetPathPart (gChemin_local_donnees$ + NomFichier_1$)
If FileSize (Dossier$) <> -2 ; Dossier
CreateDirectory (Dossier$)
EndIf
Code : Tout sélectionner
Procedure Copier_les_fichiers_en_local()
Protected NomFichier$
Protected NomFichier_1$
Protected NomFichier_2$
Protected NomFichier_3$
Protected NumFic
Protected i
Protected j
Protected Ignorer$
Protected Dossier$
Ajouter_au_log ("Copie fichiers locaux début.")
Afficher_message ("Copie fichiers locaux début.")
; Cartouches
NomFichier$ = gChemin_fichier_cartoucheur$
If NomFichier$ <> ""
NumFic = ReadFile(#PB_Any, NomFichier$)
If NumFic <> 0
gChemin_fichier_cartoucheur$ = NomFichier$
Ignorer$ = ReadString(NumFic)
For j=0 To #MAX_BANQUES - 1
Banques(j)\Nom_banque$ = ReadString(NumFic)
For i=0 To #MAX_SLOTS - 1
NomFichier_1$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
If NomFichier_1$ <> ""
Dossier$ = GetPathPart (gChemin_local_donnees$ + NomFichier_1$)
If FileSize (Dossier$) <> -2 ; Dossier
CreateDirectory (Dossier$)
EndIf
CopyFile (gChemin_general_donnees$ + NomFichier_1$, gChemin_local_donnees$ + NomFichier_1$)
Ajouter_au_log ("Slot, copie de '" + gChemin_general_donnees$ + NomFichier_1$ + "' vers dossier local '" + gChemin_local_donnees$ + NomFichier_1$ + "'.")
Afficher_message ("Slot, copie de '" + gChemin_general_donnees$ + NomFichier_1$ + "' vers dossier local '" + gChemin_local_donnees$ + NomFichier_1$ + "'.")
EndIf
Next i
Next j
Ignorer$ = ReadString(NumFic)
CloseFile(NumFic)
Else
MessageRequester("Information","Impossible d'ouvrir le fichier cartoucheur!")
EndIf
Else
Afficher_message ("Pas de cartoucheur chargé.")
EndIf
; Playliste
NomFichier$ = gChemin_fichier_playliste$
If NomFichier$ <> ""
NumFic = ReadFile(#PB_Any, NomFichier$)
If NumFic <> 0
Ignorer$ = ReadString(NumFic)
For i=0 To 20 - 1
NomFichier_1$ = ReadString(NumFic)
NomFichier_2$ = ReadString(NumFic)
NomFichier_3$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
Ignorer$ = ReadString(NumFic)
If NomFichier_1$ <> ""
Dossier$ = GetPathPart (gChemin_local_donnees$ + NomFichier_1$)
If FileSize (Dossier$) <> -2 ; Dossier
CreateDirectory (Dossier$)
EndIf
CopyFile (gChemin_general_donnees$ + NomFichier_1$, gChemin_local_donnees$ + NomFichier_1$)
Ajouter_au_log ("Playliste sonore, copie de '" + NomFichier_1$ + "' vers dossier local")
Afficher_message ("Playliste sonore, copie de '" + NomFichier_1$ + "' vers dossier local")
EndIf
If NomFichier_2$ <> ""
Dossier$ = GetPathPart (gChemin_local_donnees$ + NomFichier_2$)
If FileSize (Dossier$) <> -2 ; Dossier
CreateDirectory (Dossier$)
EndIf
CopyFile (gChemin_general_donnees$ + NomFichier_2$, gChemin_local_donnees$ + NomFichier_2$)
Ajouter_au_log ("Playliste intro, copie de '" + NomFichier_2$ + "' vers dossier local")
Afficher_message ("Playliste intro, copie de '" + NomFichier_2$ + "' vers dossier local")
EndIf
If NomFichier_3$ <> ""
Dossier$ = GetPathPart (gChemin_local_donnees$ + NomFichier_3$)
If FileSize (Dossier$) <> -2 ; Dossier
CreateDirectory (Dossier$)
EndIf
CopyFile (gChemin_general_donnees$ + NomFichier_3$, gChemin_local_donnees$ + NomFichier_3$)
Ajouter_au_log ("Playliste outro, copie de '" + NomFichier_3$ + "' vers dossier local")
Afficher_message ("Playliste outro, copie de '" + NomFichier_3$ + "' vers dossier local")
EndIf
Next i
Else
MessageRequester("Information","Impossible d'ouvrir le fichier playliste !")
EndIf
Else
Afficher_message ("Pas de playliste chargée.")
EndIf
Ajouter_au_log ("Copie fichiers locaux terminée.")
Afficher_message ("Copie fichiers locaux terminée.")
EndProcedure
Re: CopyFile, création du chemin lors de la copie
j'ai remplacé par la fonction createpath que j'ai trouvé sur le forum anglais
http://forums.purebasic.com/english/vie ... =3&t=68073
http://forums.purebasic.com/english/vie ... =3&t=68073