Bonsoir Julien,
il y a plusieurs façons de faire une recherche dans un script AppleScript. Cela peut dépendre du nombre de fichiers dans le volume ou dossier recherché, si il y a des hiérarchies des sous dossiers ou si tout est au même niveau.
Cela dépends enfin si tu connais exactement le nom via FileMaker, c'est à dire son nom ET son extension, ou seulement une partie de son nom.
Methode Applescript pur :
set Dossier_Recherche to "Le_Mac:le_Chemin_des_Dossiers:"tell application "Finder" to set Mes_Fichiers to files of entire contents of (Dossier_Recherche as alias) where name is "xxxx.jpg"
Cela va fonctionner, mais cela peut être très long, selon le nombre de fichiers et l'arborescence des fichiers.
Une autre méthode, beaucoup plus rapide consiste à utiliser la commande Unix 'find', appelée dans AppleScript via un do shell script.
En plus, tu n'es pas obligé de connaître tout le nom du(des) fichier(s) recherché(s). C'est la méthode que je te conseille.
Dans le script ci-dessous, j'en profite pour faire la copie du fichier trouvé vers le Dossier_Destination: A toi de changer les noms !
1 2 3 4 5 6 7 8 9
| set Dossier_Destination to "xxx:xxx:xxx"
set Dossier_Recherche to (Quoted form of (POSIX path of "Mon_Disque:Users:Mon_User:Dossier_Images"))
set Nom_Fichier to "Image*" -- provient de FileMaker : le caractère '*' indique tout les fichiers commençant par Imagexxxxxx
set Ma_List to do shell script "find " & Dossier_Recherche & " -name " & Nom_Fichier
set Mes_Lignes to paragraphs of Ma_List
repeat with Un_Fichier in Mes_Lignes
set Fichier to POSIX file Un_Fichier-- transforme le chemin Unix en chemin Applescript
Tell Application "Finder " to move Fichier to Dossier_Destination-- copie le fichier vers la dossier de destination
end repeat |
Tu remarques la boucle Repeat / End Repeat car le résultat du Find est tous les fichiers dont le nom commence par Image et se fini par n'importe quoi : c'est le rôle de '*'. Le script boucle donc sur chaque résultat obtenu.
Note: il est aussi possible d'utiliser d'autres commandes Unix comme 'mdfind' ou 'locate', mais 'find' semble suffisant ici.
Cordialement
Partager