Ich versuche, Folgendes in einem Automator-Workflow zu tun:
Hier ist ein Beispiel für die Dateinamen, die ich umbenennen möchte:
Das Trennzeichen, nach dem ich teile, ist das Dollarzeichen "$", um die folgenden neuen Dateien zu erstellen:
Dies sind die Dateinamenformate, die ich möchte, damit der Automator die Verarbeitung fortsetzt.
Dank eines anderen Benutzers konnte ich so weit kommen. Mein Workflow schlägt jedoch bei Schritt 5 fehl. Ich erhalte die folgende Warnung:
Die Aktion "Finder-Elemente umbenennen: Text hinzufügen" wurde nicht mit den erforderlichen Daten versorgt.
Hier ist die Workflow-Einrichtung in Automator:
Mit dem folgenden AppleScript:
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
Ich dachte, durch die Rückgabe der Ausgabe würde der nächste Workflow die erforderlichen Änderungen aufnehmen und mit ihnen fortfahren. Ich sehe, das ist nicht der Fall.
Wie gebe ich meine Ausgabe zurück, damit das nächste Workflow-Element sie verwenden und mit der Dateiumbenennung fortfahren kann?
Es ist immer noch nicht ganz klar, was Sie erreichen möchten, aber hier ist ein Beispiel- Workflow , den Sie vielleicht nützlich finden.
$
im Basisnamen des Dateinamens zu entfernen .Code für die Aktion "Shell-Skript ausführen ":
cd "$(dirname "$1")"
for f in "$@"
do
mv "$(basename "$f")" "$(printf "$(basename "$f")" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
echo "$(ls -1)"
Befehl ist in diesem Anwendungsfall nicht wirklich erforderlich und wurde in diesem Beispiel nur verwendet, um anzuzeigen, dass die Dateinamen geändert wurden, und um dies im Ergebnisbereich anzuzeigen .Update: Neuer Code für die Aktion Shell-Skript ausführen : Verwenden Sie diesen Code anstelle des ursprünglichen Codes oben. Ich habe es so modifiziert, dass es etwas effizienter ist , einmal statt zweimal anrufen zu müssen. (Ich habe den Code in der Aktion Shell-Skript ausführen im Originalbild unten nicht aktualisiert.)basename
cd "$(dirname "$1")"
for f in "$@"; do
n="$(basename "$f")"
mv "$n" "$(printf "$n" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
Hinweis: Siehe auch den zweiten Automator- Workflow , der nach dem Originalbild unten gezeigt wird, der die Notwendigkeit des zweiten Segments negiert: , da seine Run Shell Script- Aktion so codiert ist, dass sie die Umbenennung handhabt, die im zweiten Segment stattfindet, Hinzufügen prefix-
und -proc
Austauschen -suffix
.
Siehe das Bild unten für andere anwendbare Einstellungen von Automator- Aktionen , wie im OP gezeigt.
Wie Sie im Bild unten sehen können, wurden alle Aktionen erfolgreich abgeschlossen und wie programmiert durchgeführt, wobei der Ergebnisbereich jeder Aktion die Ergebnisse ihrer Aktion anzeigt .
Anstelle des First Automator Workflow zu verwenden.
Code für die Aktion Shell-Skript ausführen im zweiten Automator-Workflow:
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)"
for
Schleife platziert habe , da dies der einzige Code ist , den Sie nach Bedarf ändern sollten/wollen (und sie müssen nicht innerhalb der for
Schleife sein ). Ich habe das Bild des Automator- Workflows nicht aktualisiert , um dieses Update widerzuspiegeln.Sie könnten, falls erforderlich/gewünscht, diesem zweiten Workflow ein anderes zweites Segment hinzufügen , aber der Code in dieser Aktion Shell-Skript ausführen macht die beiden Aktionen Rename Finder Items: Add Text überflüssig , die sich im zweiten Segment des ersten ( Original), Arbeitsablauf .
Hinweis: Ich werde dies mit einer Erklärung darüber aktualisieren, was der Code in der Aktion Run Shell Script tut , sobald ich kann.
p
und nach Bedarf/Wunsch ändern müssen . Der verbleibende Code sollte nicht geändert werden müssen.
s
t
for
Schleife platziert habe , da dies der einzige Code ist , den Sie nach Bedarf ändern sollten/wollen (und das tun sie nicht müssen innerhalb der for
Schleife sein ). Ich habe das Bild des Automator- Workflows nicht aktualisiert , um dieses Update widerzuspiegeln.
Benutzer3439894
(anItem as text)
.Benutzer3439894
a new file$SG789.jpg
inSG789.jpg
.Benutzer3439894
Yazmin
Yazmin
Benutzer3439894