Applescript : Erreur lors de l'exécution d'un script de renommage |
Bienvenue invité ( Connexion | Inscription )
Applescript : Erreur lors de l'exécution d'un script de renommage |
2 Jul 2021, 12:02
Message
#1
|
|
Nouveau Membre Groupe : Membres Messages : 2 Inscrit : 2 Jul 2021 Membre no 214 260 |
Bonjour à tous,
Je suis nouvelle sur ce forum, qui m'a déjà bien aidée J'aurais besoin d'un petit conseil relatif à l'exécution d'un script. Je suis en stage dans une entreprise qui a besoin de normaliser la nomenclature de ses fichiers pour faciliter leur inventaire/manipulation. La nomenclature que nous avons retenue est "AAAAMMJJ_TITRE_SOUS-TITRE-EVENTUEL". Pour les fichiers plus vieux, j'ai pu me faire des routines en mêlant Automator, Namechanger et manuellement car les noms étaient parfois très variables. Or, j'arrive dans une période où le nommage est dans l'ordre inverse avec un autre format de date : "TITRE SOUS-TITRE-EVENTUEL AAMMJJ". J'ai donc besoin de déplacer la date en première position et de rajouter le préfixe "20" pour avoir un format à 8 chiffres au lieu de 6, ce que ne permettent pas (à ma connaissance) Namechanger et Automator. Grâce à une réponse à un autre post sur ce même forum, j'ai écrit un script Applescript que je pense inclure dans un processus Automator pour corriger certains détails. Le voici (avec très certainement des erreurs/passages inutiles, c'est la première fois que je fais ça) : Code tell application "Finder" set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer" my inspecter(chemin) end tell on inspecter(un_dossier) tell application "Finder" -- traitement des fichiers : set les_fichiers to files of un_dossier repeat with chaque_fichier in les_fichiers -- traitement d'un fichier tell application "Finder" set nom to name of chaque_fichier --recupere le nom du fichier set extens to document file nom in un_dossier --recupere l extension du fichier set lextension to name extension of extens set sauv to AppleScript's text item delimiters set AppleScript's text item delimiters to {"."} set elements to text items of nom set nomcourt to items 1 thru -2 of elements as string set ancien_nom to nomcourt -- nom sans extension set AppleScript's text item delimiters to sauv set numero to offset of "21" in ancien_nom set numero to numero - 1 set numero to characters 1 thru numero of ancien_nom set debut to result set numero to offset of "21" in ancien_nom set numero to numero + 1 set fin to characters numero thru end of ancien_nom set fin to result set nouveaunom to ("202" & fin & "_" & debut & "." & lextension) as string set name of file nom to nouveaunom end tell end repeat end tell end inspecter Sauf que quand je l'exécute sur des fichiers test, je reçois ce message d'erreur : error "Erreur dans Finder : Il est impossible de régler file [Ancien nom du fichier] à [Nouveau nom souhaité]." number -10006 from file "Ancien nom du fichier" Je précise que le "Nouveau nom souhaité" correspond au résultat que je souhaite obtenir, avec quelques corrections qui peuvent être apportées en incluant le script dans un processus Automator. D'ailleurs, s'il faut enlever certains éléments (notamment la sélection du dossier en début de script, etc) pour que je puisse l'exécuter depuis Automator, n'hésitez pas à me le faire savoir, c'est tout un monde pour moi (déjà que Mac n'est pas mon environnement de base...)! Merci beaucoup de m'avoir lue jusque là (et pour votre indulgence), j'espère que j'ai été assez claire... Bonne journée ! |
|
|
2 Jul 2021, 19:49
Message
#2
|
|
Adepte de Macbidouille Groupe : Membres Messages : 176 Inscrit : 15 Mar 2008 Lieu : Lorraine Membre no 110 156 |
Bonjour,
Le script que tu as récupéré est fait pour renommer tous les fichiers du dossier sélectionné ainsi que tous les fichiers dans ses sous dossiers. La partie que tu as ajouté ne peut pas fonctionner. Il faut juste récupérer le début du nom moins le 7 derniers caractères (6 pour la date plus l'espace) Et récupérer les 6 derniers caractères du nom puis ajouter "20" (le millésime). Puis renommer après la mise en forme Ce script n'a pas besoin d'être dans un automator. Il suffit de l'exécuter en sélectionnant le dossier voulu. Ce qui donne. Code tell application "Finder"
set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer" my inspecter(chemin) end tell on inspecter(un_dossier) tell application "Finder" -- traitement des fichiers : set les_fichiers to files of un_dossier repeat with chaque_fichier in les_fichiers -- traitement d'un fichier tell application "Finder" set nom to name of chaque_fichier --recupere le nom du fichier set extens to document file nom in un_dossier --recupere l extension du fichier set lextension to name extension of extens set sauv to AppleScript's text item delimiters set AppleScript's text item delimiters to {"."} set elements to text items of nom set nomcourt to items 1 thru -2 of elements as string set ancien_nom to nomcourt -- nom sans extension set AppleScript's text item delimiters to sauv set fin to text 1 thru -8 of ancien_nom set debut to "20" & text -6 thru -1 of ancien_nom set nouveaunom to debut & " " & fin & "." & lextension set name of chaque_fichier to nouveaunom end tell end repeat end tell end inspecter Ce message a été modifié par Zeltron54 - 2 Jul 2021, 19:51. -------------------- Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6) Imac 24 M3 2023 Ram 24Go macOS Sonoma 14.3 |
|
|
6 Jul 2021, 09:00
Message
#3
|
|
Nouveau Membre Groupe : Membres Messages : 2 Inscrit : 2 Jul 2021 Membre no 214 260 |
Bonjour, et merci Zeltron54 pour ta correction, ça fonctionne bien !
|
|
|
Nous sommes le : 25th September 2024 - 16:49 |