Bonjour,
Je débute en AppleScript, et je suis la liste de diffusion à chaque question (enfin je crois).
J'ai élaboré un script pour le boulot en reprenant par-ci par-là des morceaux de codes sur le site d'Apple et leurs PDF de "References" et sur Internet.
Mais je ne trouve aucune réponse pour résoudre mon problème.
Le but : l'utilisateur entre une période, puis il est invité à sélectionner des dossiers dans la fenêtre qui s'affiche. Il clique sur OK, et les dossiers sélectionnés se dupliquent sur le volume Archivage préalablement monté. Enfin, il est demandé à l'utilisatuer, en fin de copie, si il veut ZIP chacun des dossier.
MAIS
Lorsque la copie des fichiers prend du temps (14Go à déplacer par exemple), j'ai un message d'erreur : AppleEvent TimedOut... et le script ne fait pas les ZIP demandés.
Si vous pouvez m'aider, je vous en serait très reconnaissant.
Cordialement,
Sylvain Houdayer
sylvain.h@???
www.sylvainh.com
Voici le script
beep
set R to return
display dialog "Attention !" & R & R & "Ce script va éjecter puis remonter les volumes" & R & R & "Archivage" & R & "Jobs_On_Printer_Tiff" & R & "AraxiVolume_xserve_SMB" & R & R & "Assurez-vous d'avoir quitter toutes les applications faisant appel à des éléments présents sur ces volumes puis cliquez sur OK pour continuer ou sur Annuler pour conserver vos volumes actuellement montés et mettre fin à l'opération d'archivage."
tell application "Finder"
try
eject disk "Archivage"
eject disk "Jobs_On_Printer_Tiff"
eject disk "AraxiVolume_xserve_SMB"
end try
end tell
set prompt to "Pour quel période voulez-vous archiver ? (ex : 801, 802, 803,...,812)"
repeat 3 times
set dialogResult to display dialog prompt ¬
buttons {"Cancel", "OK"} default button 2 ¬
default answer "" with icon 1
set leMois to text returned of dialogResult
set longueurDuMois to length of leMois
if longueurDuMois < 3 then
display alert "Le Mois entré ne comporte que " & longueurDuMois & ¬
" caractère(s). Il doit en comporter au moins 3" buttons {"Resaisir"} as warning
else
tell application "Finder"
mount volume "
afp://xserve.local/Archivage/" as user name "operateur" with password "numerique"
mount volume "
afp://xserve.local/AraxiVolume_xserve_SMB/Jobs/" as user name "operateur" with password "numerique"
mount volume "
afp://192.92.157.5/Jobs_On_Printer_Tiff/" as user name "ARAXI" with password "ARAXI"
if not (exists folder leMois of disk "Archivage") then
make new folder at disk "Archivage" with properties {name:leMois}
else
display alert "Le dossier " & leMois & ¬
" existe déjà. Les dossiers que vous allez sélectionner seront transférés dans le dossier déjà présent" buttons {"OK"} as warning
end if
end tell
exit repeat
end if
end repeat
tell application "Finder"
repeat
set listeDeDossiers to choose folder with prompt ¬
"Selectionnez les dossiers que vous souhaitez archiver:" & R & R & "(Appuyer sur la touche Pomme pour en selectionner plusieurs)" with multiple selections allowed
if the result is not false then -- bug à corriger : sélection du bureau tout entier si aucun dossier visiblement sélectionné
display alert "Les dossiers sélectionnés vont être copiés vers \"" & leMois & "\" sur le volume \"Archivage.\"" buttons {"OK"} as informational
move listeDeDossiers to folder leMois of disk "Archivage" with replace
exit repeat
else
display alert "Vous n'avez sélectionné aucun dossier !" buttons {"OK"} as warning
end if
end repeat
end tell
set alorsOnZipQuestion to display dialog "Les dossiers ont été transférés" & R & R & "Voulez-vous compresser ces dossiers archivés ?" buttons {"Pas Maintenant", "OK"} default button "OK"
if button returned of alorsOnZipQuestion is "OK" then
tell application "Finder"
if not (exists folder "- Compressé -" of folder leMois) then
make new folder in folder leMois of disk "Archivage" with properties {name:"- Compressé -"}
end if
set the destination_folder to folder "- Compressé -" of folder leMois of disk "Archivage" as alias
set the destination_directory to POSIX path of the destination_folder
end tell
repeat with i from 1 to number of items of listeDeDossiers
set ceDossier to item i of listeDeDossiers
set the infoDuDossier to info for ceDossier
if ceDossier is not the destination_folder and the name extension of the infoDuDossier is not in {"zip", "sit"} then
set the cheminDuDossier to the quoted form of the POSIX path of ceDossier
set the destination_path to the quoted form of ¬
(destination_directory & (name of the infoDuDossier) & ".zip")
do shell script ¬
("/usr/bin/ditto -c -k -rsrc --keepParent " & cheminDuDossier & " " & destination_path)
end if
end repeat
else
display alert "Ok, plus tard !"
end if
_______________________________________________
Applescript_fr mailing list
Applescript_fr@???
http://listes.patpro.net/mailman/listinfo/applescript_fr