I'm trying to do the following in an Automator workflow:
- Ask for Finder items from folder A
- In folder A, add a suffix to the file names
- Copy them to folder B
- In folder B, with an AppleScript, split the file name by a delimiter and then rename the file with the second half of the text split
- In folder B, add a prefix to the file names
- In folder B, add a suffix to the file names
Here is a sample of the file names I'm trying to rename:
- a new file$SG789.jpg
- file_2$123-456.jpg
- file_name$LG123.jpg
- this_file$558-432.jpg
The delimiter I'm splitting by is the "$" dollar sign to create the following new files:
- SG789.jpg
- 123-456.jpg
- LG123.jpg
- 558-432.jpg
These are the file name formats I'd like for the automator to continue processing.
Thanks to another user, I was able to get this far. However, my workflow is failing at step 5. I'm getting the following warning:
The action "Rename Finder Items: Add Text" was not supplied with the required data.
Here is the workflow setup in Automator:
With the AppleScript below:
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
I thought by returning output, the next workflow would pick up and continue with the required changes. I'm seeing that is not the case.
How do I return my output so that the next workflow item can use it and continue with the file renaming?
Best Answer
It is still not totally clear what it is you're trying to accomplish, however, here is an example workflow that you might find useful.
First Automator Workflow
First Segment:
$
in the basename of the filename.Code for Run Shell Script action:
echo "$(ls -1)"
command is not really necessary in this use case and was used in this example just to show the filenames had been changed and to show that in the Results pane.Update: New code for Run Shell Script action:
Use this code instead of the original code, above. I've modified it to be a bit more efficient having to call
basename
once, instead of twice. (I have not updated the code in the Run Shell Script action in the original image below.)Note: See also the second Automator workflow, shown after the original image below, which negates the need for the Second Segment:, as its Run Shell Script action is coded to handle the renaming that takes place in the second segment, adding
prefix-
and swapping-proc
for-suffix
.Second Segment:
See the image below for other applicable settings of Automator actions, as shown in the OP.
As you can see in the image below, all actions completed successfully and did as programed, with the Results pane of each action showing the results of it's action.
Second Automator Workflow
To be used instead of the First Automator Workflow.
Code for Run Shell Script action in the Second Automator Workflow:
for
loop, as that is the only code you should need/want to modify as necessary (and they don't need to be within thefor
loop). I have not updated the image of the Automator workflow to reflect this update.You could, if needed/wanted, add a different second segment to this second workflow, but the code in this Run Shell Script action eliminates the need for the two Rename Finder Items: Add Text actions that were in the second segment of the first (original), workflow.
Note: I will update this with an explanation of what the code is doing in Run Shell Script action, as soon as I can.