Écrit par : Inferi 2 Jul 2021, 12:02
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 !
Écrit par : Zeltron54 2 Jul 2021, 19:49
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
Écrit par : Inferi 6 Jul 2021, 09:00
Bonjour, et merci Zeltron54 pour ta correction, ça fonctionne bien !