IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Applescript : Erreur lors de l'exécution d'un script de renommage
Options
Inferi
posté 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 smile.gif

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 !


Go to the top of the page
 
+Quote Post
Zeltron54
posté 2 Jul 2021, 19:49
Message #2


Adepte de Macbidouille
*

Groupe : Membres
Messages : 171
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
Go to the top of the page
 
+Quote Post
Inferi
posté 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 !
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 24th April 2024 - 20:52