Bonjour et bienvenue,
grâce à ce sujet :
http://forums.macg.co/mac-os-x/deplacer-date-nom-d-un-fichier-1252550.html
j'ai légèrement modifié le script pour qu'il fasse ce dont tu as besoin.
D'après quelques tests, ça fonctionne bien.
Je n'ai pas modifié les commentaires dans le script, donc certains sont inexacts.
Copie-colle le script dans Editeur Applescript, compile, et exécute sur un petit dossier de test.
-- Renomme tous les fichiers d'un dossier y compris dans les sous dossiers
-- cherche "_" et inverse devant le "-" avec derriere le "-" (modifié pour que ça marche avec un espace au lieu du tiret)
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 --récupère 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 --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
set elements to text items of nom
set nomcourt to (items 1 thru -2 of elements) as string
set ancien_nom to nomcourt
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
set numero to offset of " " in ancien_nom -- position du caractere "-" pour traiter le 1ere partie du nom
set numero to numero - 1
set debut to characters 1 thru numero of ancien_nom as string
set debut to result
set blanc to characters 1 thru 1 of debut as string -- on enleve les espaces en debut de la 1ere partie du nom
repeat while blanc = " "
set long to length of debut as integer
set debut to characters 2 thru long of debut as string
set blanc to characters 1 thru 1 of debut as string
end repeat
set long to length of debut as integer -- on enleve les espaces en fin de la 1ere partie du nom
set avantdern to long - 1 as integer
set blanc to characters long thru long of debut as string
repeat while blanc = " "
set debut to characters 1 thru avantdern of debut as string
set long to length of debut as integer
set avantdern to long - 1 as integer
set blanc to characters long thru long of debut as string
end repeat
set numero to offset of " " in ancien_nom -- position du caractere "-"pour traiter le 2eme partie du nom
set numero to numero + 1
set fin to characters numero thru end of ancien_nom as string
set fin to result
set blanc to characters 1 thru 1 of fin as string -- on enleve les espaces en debut de la 2eme partie du nom
repeat while blanc = " "
set long to length of fin as integer
set fin to characters 2 thru long of fin as string
set blanc to characters 1 thru 1 of fin as string
end repeat
set long to length of fin as integer -- on enleve les espaces en fin de la 2eme partie du nom
set avantdern to long - 1 as integer
set blanc to characters long thru long of fin as string
repeat while blanc = " "
set fin to characters 1 thru avantdern of fin as string
set long to length of fin as integer
set avantdern to long - 1 as integer
set blanc to characters long thru long of fin as string
end repeat
if numero > 1 then
set nouveaunom to (fin & " " & debut & "." & lextension) as string -- le nouveau nom avec 2eme partie+ "_" + 1ere partie + extension
set name of file nom of un_dossier to nouveaunom
end if
end tell
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