automator เพื่อรัน AppleScript สำหรับเชลล์สคริปต์


2

สำหรับไฟล์ที่เลือกใน Finder ฉันต้องการเรียกใช้สคริปต์ Perl โดยใช้บริการ ฉันสร้างกระบวนการอัตโนมัติที่เรียกใช้ AppleScript:

on run {input, parameters}
    tell application "Terminal"
        activate
        do script "/Users/myaccountname/Applications/TeXcount_3_0/texcount.pl \"" & (input as string) & "\""
    end tell
end run

ปัญหาเพียงอย่างเดียวคือชื่อไฟล์ที่เลือกปรากฏเป็นสิ่งที่ต้องการ:

"Macintosh HD:Users:myaccountname:Documents:texfile.tex"

ซึ่งสคริปต์ Perl ไม่สามารถเข้าใจได้ ฉันจะทำให้เป็นชื่อไฟล์เหมือน UNIX ได้อย่างไร

คำตอบ:


4

คุณจะต้องได้รับเส้นทาง POSIX ของไฟล์อินพุต:

on run {input, parameters}
    tell application "Terminal"
        activate
        do script "/Users/myaccountname/Applications/TeXcount_3_0/texcount.pl \"" & ( POSIX path of input as string) & "\""
    end tell
end run

ฉันพบคำตอบมากกว่าเวลา StackOverflow .


1

คุณยังสามารถใช้ quoted form of เพื่อหลีกเลี่ยงข้อโต้แย้ง:

on run {input, parameters}
    tell application "Terminal"
        do script "printf %s\\\\n " & quoted form of POSIX path of item 1 of input & ">/tmp/a"
    end tell
end run

หรือถ้าบริการสามารถรับหลายไฟล์เป็นอินพุต:

on run {input, parameters}
    set args to ""
    repeat with f in input
        set args to args & " " & quoted form of POSIX path of f
    end repeat
    tell application "Terminal"
        do script "printf %s\\\\n " & args & ">/tmp/a"
    end tell
end run
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.