0 votes

Suppression en lot d'une partie des noms de fichiers à l'aide d'Automator

Je suis en train de créer un script Automator qui supprime une partie d'un nom de fichier après un délimiteur tout en préservant l'extension.

Les fichiers sont généralement appelés comme 1-cropped_DSC5888.jpg, 2-cropped_Whatsapp75.png etc. Je veux supprimer tout ce qui se trouve après _ et ne garder que la partie avec le nombre et '-cropped' donc par exemple : 1-cropped.jpg

J'ai essayé avec ce script

on run {input, parameters}
try
    set AppleScript's text item delimiters to {"_"}
    set theFileNameList to {}
    repeat with thisItem in input
        set the end of theFileNameList to text item 2 of (thisItem as text)
    end repeat
    set AppleScript's text item delimiters to {}
    return theFileNameList
on error eStr number eNum
    display dialog eStr & " number " & eNum buttons {"OK"} ¬
        default button 1 with icon caution
    set AppleScript's text item delimiters to {}
    return
end try

end run

Mais cela supprime la partie que je veux garder et garde la partie que je veux supprimer. De plus, cela me donne juste une sortie, mais ne renomme pas les fichiers réels. Une aide avec ça, s'il vous plaît?

1voto

red_menace Points 1014

Tout ce que vous faites, c'est renvoyer une liste de la dernière partie des noms (s'il y a plus d'un caractère délimiteur, la deuxième partie) vers l'action suivante.

Les délimiteurs d'éléments de texte ne sont pas vraiment nécessaires si vous utilisez simplement la première occurrence d'un caractère, vous pouvez donc faire quelque chose comme :

exécuter {entrée, paramètres}
    définir la sortie comme {}
    répéter avec un élément dans l'entrée
        définir {leDossier, ancienNom, extension} comme getNomsPieces à partir d'un élément
        essayer
            définir ici comme l'offset "_" dans ancienNom
            définir nouveauNom comme texte 1 à (ici - 1) de ancienNom
            dire à l'application "Finder" de définir le nom de l'élément sur (nouveauNom & extension)
            ajouter à la fin de la sortie (leDossier & nouveauNom & extension) comme alias
        en cas d'erreur errmess -- ne pas renommer en cas d'erreur (délimiteur non trouvé, fichier en double, etc)
            journal errmess
            ajouter à la fin de la sortie un élément comme alias
        fin essayer
    fin répéter
    renvoyer la sortie -- pour l'action suivante
fin exécuter

to getNomsPieces à partir de someItem
    dire à l'application "System Events" de dire à l'élément disque (someItem comme texte)
        définir |conteneur| comme chemin du conteneur
        définir {|nom|, extension} comme {nom, extension de nom}
    end tell
    si extension n'est pas "" alors
        définir |nom| comme texte 1 à -((compter extension) + 2) de |nom| -- juste la partie nom
        définir extension comme "." & extension
    end if
    renvoyer {conteneur, |nom|, extension}
fin getNomsPieces

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X