1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| set Dossier_Source to choose folder with prompt "Sélectionner le dossier contenant les fichiers à copier"
set Dossier_Dest to choose folder with prompt "Sélectionner le volume de destination"
Copie_Dossier(Dossier_Source, Dossier_Dest)
-- fin du programme principal
-- copie de façon récursive le contenu du dossier D_S dans le dossier D_D
on Copie_Dossier(D_S, D_D)
tell application "Finder"
-- création du dossier sur le volume de destination
set Nom_Dos to name of D_S
set New_F to (make new folder at folder D_D with properties {name:Nom_Dos}) as alias
set Les_Fichiers to {}
try
set Les_Fichiers to every file of folder D_S
on error
log ("impossible de lire les fichiers du dossier " & (D_S as string))
end try
-- copie des fichiers 1 par 1 avec enregistrement en cas d'erreur
repeat with F in Les_Fichiers
try
duplicate F to New_F
on error
log ("erreur de copie de " & (F as string) & " du dossier " & Nom_Dos)
end try
end repeat
-- lecteure des sous dossiers de ce dossier
set S_Dossiers to {}
try
set S_Dossiers to every folder of folder D_S
on error
log ("impossible de lire les dossiers du dossier " & (D_S as string))
end try
end tell
-- appel récursif de cette procédure pour chaque sous dossier
repeat with D in S_Dossiers
Copie_Dossier((D as alias), New_F)
end repeat
end Copie_Dossier
-- sous programme d'enregistreement d'un message dans un fichier text
on log (msg)
set the my_log to ((path to desktop) as text) & "Log_Copie.txt"
try
-- Ouverture du fichier text : Le Finder le crée si besoin
open for access file the my_log with write permission
write (msg & return) to file the my_log starting at eof
close access file the my_log
on error
try
close access file the my_log
end try
end try
end log |
Partager