Déplacer la date dans le nom d'un fichier

djoull

Membre enregistré
5 Octobre 2014
8
0
45
Bonjour à tous,

Je suis nouveau sur le forum et relativement novice avec Apple Script...
J'ai essayé mais je n'arrive pas à finaliser ce que je voudrais obtenir.

Voici mon problème. J'ai un très grand nombre de fichier dont le nom commence par la date. Je voudrais donc pouvoir renommer tous ces fichiers par le nom orignal mais en déplaçant la date à la fin de celui-ci.

Exemple:
1940 - Pinochio.iso => dois devenir => Pinochio - 1940.iso
2001 - Shrek 1.iso => dois devenir => Shrek 1 - 2001.iso
1973 - Robin Hood.iso => dois devenir => Robin Hood - 1973.iso

Merci pour vos lumières....;-)
 
J'ai bien une petite solution, mais plutôt pour Terminal. On peut certes l'intégrer dans un AppleScript mais je n'ai pas de Mac sous la main.

Donc, dans Terminal, cela donne :
a) ouvrir Terminal.
b) aller dans le dossier où se trouvent les fichiers ISO. Cela se fait avec la commande cd. Tu écris "cd " (avec l'espace) et tu fais un glisser-déposer du dossier depuis le Finder dans Terminal, puis tu appuies sur la touche return (ou enter).
c) ensuite tu exécutes la commande suivante (copie et colle directement, ce sera plus simple) :
Bloc de code:
ls *.iso |  sed -e 's/^\(.*\) - \(.*\)\.iso$/mv \"\0\" \"\2 - \1.iso\"/' > renomme.sh
d) affiche-nous ensuite le contenu de ce fichier "renomme.sh" histoire de s'assurer que ça a marché chez toi comme dans mes tests.
e) si c'est bon, il doit suffire de faire ensuite :
Bloc de code:
sh renomme.sh

(je n'ai pas trop le temps asteure mais je peux expliquer la commande ci-dessus ;))
 
Pourquoi pas. Disons que la question a réveillé l'amateur d'expressions rationnelles qui sommeille (d'un sommeil très léger) en moi. :rateau:
 
Bonsoir, tout d'abord, merci pour vos réponses.

Alors voilà, j'ai essayé avec File Buddy mais il semblerait qu'il n'y ait pas moyen de faire ce déplacement dans un nom de fichier....

Ensuite, j'ai bien essayé la méthode de bompi avec le terminal (en suivant scrupuleusement la méthode) mais cela ne fonctionne pas... grrrr, j'espérais mais non, pas de chances!

J'ai essayé en placent uniquement trois fichier dans un répertoire, c'est bizarre car dans le fichier "renommes", il n'en est mentionné qu'un seul.
Voici ce que j'obtient:
" mv: rename 0 to Fantasia - 1940.iso: No such file or directory "

Pourtant les fichiers sont bien présent.

Donc me voici de nouveau au point de départ....

En parcourant le forum, il semblerait que ce genre de problème ai déjà été posé il y a un bon moment mais les fichiers joints dans le fil de discussions ne sont plus disponible. Dommage.
(http://forums.macg.co/bureautique-utilitaires-education/probleme-particulier-automator-305243.html)
 
Bonsoir,

A l'époque j'avais du faire un petit script pour un cas particulier et bien précis qui répondais à la demande.
Pour toi il faut le réécrire , mais pour cela il faut le détail exact de la structure des noms actuels et la structure que tu veux obtenir.

Pourtant la commande que t'a concocté Bompi devrait fonctionner ! même si moi je ne l'a comprend pas. :rateau:
 
Bonsoir,

Oui, j'ai pourtant bien suivi la commande mais cela semble ne pas bien fonctionner...

En fait, tous mes fichiers sont les mêmes, à savoir;

La date, espace, trait, espace, nom de fichier, point, extension
=> 1940 - Pinochio.iso

Je voudrais que ceux-ci deviennent;
nom de fichier, espace, date, point, extension.
=> Pinochio 1940.iso

Autre exemples;
2001 - Shrek 1.iso => dois devenir => Shrek 1 - 2001.iso
1973 - Robin Hood.iso => dois devenir => Robin Hood - 1973.iso

Merci pour votre aide.

---------- Nouveau message ajouté à 20h17 ---------- Le message précédent a été envoyé à 20h12 ----------

Ou peut-être plus simplement, intervertir simplement ce qui se trouve de chaque côté du "-".
Donc en gros "switcher" tout ce qui se trouve entre le "-".

C'est sans doute plus facile...
 
Essai avec ce script , si cela te convient.
Fais un essai sur une copie ou sur un dossier avec quelques fichiers.
Fais un copier, coller du script ci dessous dans l'éditeur applescript.


-- Renomme tous les fichiers d'un dossier y compris dans les sous dossiers
-- cherche "_" et inverse devant le "-" avec derriere le "-"
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
 
FANTASTIQUE !!! Cela fonctionne à merveille!
Mille mille merci pour votre aide, vous n'imaginez pas le service rendu!

J'aimerais tellement pouvoir arriver à faire ce genre de chose moi même mais une telle programmation me dépasse...

Merci encore!
 
Content d'avoir pu rendre service !

Pense à passer la discussion en "résolue"

Bonne soirée.
 
  • J’aime
Réactions: macomaniac