5 votes

L'action de l'automate n'est pas fournie avec les données requises

J'essaie de faire ce qui suit dans un flux de travail Automator :

  1. Demander les éléments du Finder du dossier A
  2. Dans le dossier A, ajoutez un suffixe aux noms de fichiers
  3. Copiez-les dans le dossier B
  4. Dans le dossier B, avec un AppleScript, divisez le nom du fichier par un délimiteur, puis renommez le fichier avec la deuxième moitié du texte divisé
  5. Dans le dossier B, ajoutez un préfixe aux noms de fichiers
  6. Dans le dossier B, ajoutez un suffixe aux noms de fichiers

Voici un échantillon des noms de fichiers que j'essaie de renommer :

  • un nouveau fichier$SG789.jpg
  • fichier_2$123-456.jpg
  • nom_fichier$LG123.jpg
  • this_file$558-432.jpg

Le délimiteur par lequel je divise est le signe dollar "$" pour créer les nouveaux fichiers suivants :

  • SG789.jpg
  • 123-456.jpg
  • LG123.jpg
  • 558-432.jpg

Ce sont les formats de noms de fichiers que j'aimerais que l'automate continue à traiter.

Grâce à un autre utilisateur, j'ai pu aller jusqu'ici. Cependant, mon flux de travail échoue à l'étape 5. J'obtiens l'avertissement suivant :

L'action "Renommer les éléments du Finder : Ajouter du texte" n'a pas été fournie avec les données requises.

Voici la configuration du flux de travail dans Automator :

enter image description here

Avec l'AppleScript ci-dessous :

 on run {input, parameters}
     try
        set AppleScript's text item delimiters to "$"
        set output to {}
        repeat with anItem in input
            set the end of output to text item 2 of (anItem as text)
        end repeat
        set AppleScript's text item delimiters to {}
        return output
    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

Je pensais qu'en renvoyant la sortie, le flux de travail suivant reprendrait et continuerait avec les changements requis. Je constate que ce n'est pas le cas.

Comment puis-je renvoyer ma sortie afin que l'élément de flux de travail suivant puisse l'utiliser et poursuivre le renommage du fichier ?

5voto

user3439894 Points 52496

Ce que vous essayez d'accomplir n'est pas encore tout à fait clair, mais voici un exemple. flux de travail que vous pourriez trouver utile.

Premier flux de travail Automator

  • Divisé en deux segments de travail :

Premier segment :

  • Demandez les articles Finder
  • Renommer les éléments du Finder : Ajouter du texte
  • Copier les éléments du Finder
  • Exécuter le Shell script
    • Paramètres : Shell : bin/bash et Passer les entrées : comme arguments
      • Remplacer le code par défaut avec le code ci-dessous.
      • C'est ce qui est utilisé pour enlever jusqu'à et y compris le $ dans le nom de base de la nom de fichier .

Code pour Exécuter le Shell script action :

cd "$(dirname "$1")"
for f in "$@"
do
    mv "$(basename "$f")" "$(printf "$(basename "$f")" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
  • Note : Le site echo "$(ls -1)" commande n'est pas vraiment nécessaire dans ce cas d'utilisation et a été utilisé dans cet exemple juste pour montrer que les noms de fichiers avaient été changés et pour montrer que dans les Résultats panneau .

  • Mise à jour : Nouveau code pour Exécuter le Shell script action :

    Utilisez cette code au lieu de l'original code ci-dessus. Je l'ai modifié pour qu'il soit un peu plus efficace d'avoir à appeler basename une seule fois, au lieu de deux. (Je n'ai pas mis à jour le code dans le Exécuter le Shell script action dans l'image originale ci-dessous).

    cd "$(dirname "$1")"
    for f in "$@"; do
        n="$(basename "$f")"
        mv "$n" "$(printf "$n" | sed -E 's/^.*\$//')"
    done
    echo "$(ls -1)"
  • Note : Voir aussi le deuxième Automator flux de travail qui figure après l'image originale ci-dessous, ce qui rend inutile l'utilisation de l'outil de gestion de l'image. Deuxième segment : comme son Exécuter le Shell script action est codé pour gérer le renommage qui a lieu dans le deuxième segment, en ajoutant prefix- et l'échange -proc pour -suffix .


Deuxième segment :

  • Demandez les articles Finder
    • Options : [] Ignorer l'entrée de cette action
      • En cochant cette option, vous verrez, dans l'image ci-dessous, qu'il y a une déconnexion voulue entre l'action précédente et celle-ci.
  • Renommer les éléments du Finder : Ajouter du texte
  • Renommer les éléments du Finder : Ajouter du texte

Voir l'image ci-dessous pour les autres paramètres applicables de Automator actions comme indiqué dans l'OP.

Comme vous pouvez le voir dans l'image ci-dessous, toutes les actions s'est déroulé avec succès et s'est déroulé comme prévu, avec le volet Résultats de chaque action montrant les résultats de son action .


First Automator Workflow


Deuxième flux de travail Automator

À utiliser à la place du premier flux de travail Automator.

  • Demandez les articles Finder
  • Renommer les éléments du Finder : Ajouter du texte
  • Copier les éléments du Finder
  • Exécuter le Shell script
    • Paramètres : Shell : bin/bash et Passer les entrées : comme arguments
      • Remplacer le code par défaut avec le code sous l'image.

Second Automator Workflow

  • Les résultats des trois premiers actions dans cette seconde Automator flux de travail sont exactement les mêmes que celles montrées dans le premier flux de travail ci-dessus, j'ai donc laissé le Résultats panneau caché pour ces actions . Cependant, le Résultats panneau pour le Exécuter le Shell script action montre les résultats souhaités.

Code pour Exécuter le Shell script action dans le deuxième flux de travail Automator :

p='prefix-'
s='-suffix'
t='-proc'

cd "$(dirname "$1")"
for f in "$@"; do
    n="$(basename "$f")"
    if [[ $n =~ ^.*\$.*${t}\.${n##*.} ]]; then
        mv "$n" "${p}$(printf "${n%.*}" | sed -E -e "s/$t/$s/" -e 's/^.*\$//').${n##*.}"
    fi
done
echo "$(ls -1)"
  • Note de mise à jour : J'ai modifié le code en plaçant le variable des affectations en dehors de la for boucle car c'est le seul moyen code que vous devez/voulez modifier si nécessaire (et ils ne doivent pas nécessairement se trouver dans le cadre de l for boucle ). Je n'ai pas mis à jour l'image de l'Automator flux de travail pour refléter cette mise à jour.

Vous pourriez, si vous le souhaitez, ajouter un second segment différent à ce second segment. flux de travail mais le code dans ce Exécuter le Shell script action élimine la nécessité des deux Renommer les éléments du Finder : Ajouter du texte actions qui étaient dans le deuxième segment du premier (original), flux de travail .

Note : Je mettrai à jour ce texte avec une explication de ce que le code fait dans Exécuter le Shell script action dès que je le pourrai.

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