문제

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

도움이 되었습니까?

해결책

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. enter image description here

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top