How to pass file path to AppleScript in Automator?
applescript, automator
Solution
Note the "Service receives selected ... " at top, which gives result to applescript. This will open folders and containers of files, but won't be redundant.
on run {input, parameters}
set didThese to {}
repeat with f in input
set f to (f as text)
if f ends with ":" then
if f is in didThese then --check to see if we did this already
--ignore
else
tell application "Terminal" to do script "cd " & quoted form of POSIX path of f
set didThese to (didThese & f) --load into memory for subsequent iterations of loop
end if
else
--first get containing folder, then use that
tell application "Finder" to set f to ((container of alias f) as alias as text)
if f is in didThese then
--ignore
else
tell application "Terminal" to do script "cd " & quoted form of POSIX path of f
set didThese to (didThese & f)
end if
end if
end repeat
activate application "Terminal"
end run
Gleaned from https://apple.stackexchange.com/questions/112731/automator-service-to-print-a-relative-path-of-selected-files-printing-everything
[edit:] Incidentally, one thing left to decide is how to treat bundles, like .app files, which aren't really files. Using
set i to info for (alias f)
then
package folder of i
will enable the script to determine this, through an additional if/then branch. I personally don't mind it "cd"ing into bundles.
Problem
I want to be able to right click on a file or folder in Finder and select Services > Open Terminal to open a terminal window at that path. In automator, I have a service that runs an AppleScript ``` tell application "Terminal" do script "cd $filePath" activate end tell ``` I don't know how to pass the file path! Bonus: How can I ensure that this works for both files and folders? If its a file, it may say that the file is not a directory. Bonus: Where could I have found this answer myself? The documentation seems to be way to dense. Thanks Chet