Isoler la fin de la nomenclature "applescript"

hansb

Membre enregistré
4 Février 2009
9
1
Bonjour,
Je dispose d’un script efficace pour renommer des fichiers avec le nom du dossier dans lequel ils sont.
J’aimerais remplacer la fonction de numérotation par la conservation de la fin de la nomenclature de chaque fichier.


Exemple :
Nom de fichier : TEST_34_SEMAINE5_CHAISE
TEST_34_SEMAINE5_HERBE
TEST_34_SEMAINE5_ARBRE

Nom de dossier : TEST_EM87_RUBRIQUE5

Attente : TEST_EM87_RUBRIQUE5_CHAISE
TEST_EM87_RUBRIQUE5_HERBE
TEST_EM87_RUBRIQUE5_ARBRE


AppleScript:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
    my inspecter(chemin) --appel routine avec transmission des variables
end tell
on inspecter(un_dossier)
    -- récupération du nom du dossier
    set ledossier to un_dossier as string
    set ledossier to text 1 thru -2 of ledossier
    set AppleScript'stext item delimiters to {":"}
    set ddd to get last text item of ledossier

    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        set lenumero to 1 --initialise le numero pour le dossier en cours
    
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            set nom to name of chaque_fichier-- recupere le nom du fichier
            set extens to document filenom in un_dossier--recupere l extension du fichier
            set lextension to name extension of extens
        
            set numerotation to lenumero as string--converti le numero en texte
        
            set nouveaunom to (ddd & "_" & numerotation & "." & lextension) as string-- le nouveau nom dossier(DDD)+ _+extension
        
            set name of filenom of un_dossier to nouveaunom--écrit le nom du fichier
            set lenumero to lenumero + 1 --incremente la numérotation
        end repeat
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell



Voilà je ne sais pas trop où trouver cette commande. Une idée ?

Merci !
 
Dernière édition par un modérateur:
Bonjour,

Voici le script qui fait cela :

AppleScript:
activate
set chemin to (choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer") as list
my inspecter(chemin) --appel routine avec transmission des variables
activate
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})

on inspecter(lesDossiers)
    tell application "Finder"
        repeat with un_dossier in lesDossiers
            set ddd to name of un_dossier
            repeat with un_fichier in (get files of un_dossier) -- traitement des fichiers :
                set nom to name of un_fichier -- récupère le nom du fichier
                set finDuNom to my getLastPart(nom, "_") -- récupère le texte après la dernière occurrence de _
                set name of un_fichier to ddd & "_" & finDuNom -- écrit le nom du fichier
            end repeat
            my inspecter(get folders of un_dossier) -- traitement des dossiers :
        end repeat
    end tell
end inspecter

on getLastPart(t, s)
    if s is in t then
        set {tid, text item delimiters} to {text item delimiters, s}
        set t to last text item of t
        set text item delimiters to tid
    end if
    return t
end getLastPart
 
Dernière édition par un modérateur:
Fantastique !!

Merci beaucoup JacqR !

C'était super frustrant de ne pas trouver la commande "set finDuNom to my getLastPart(nom, "_")".


post-3890-Bill-Murray-Youre-awesome-85vL.jpeg