วิธีการเปลี่ยนเส้นทาง AppleScript เป็นเส้นทางแบบเทอร์มินัล


11

ฉันมีบริการที่กำหนดเองที่ฉันสร้างใน Automater (ฉันใช้ OS X 10.6.5) บริการเรียกใช้งาน AppleScript ซึ่งจะเรียกใช้งานเชลล์สคริปต์ นี่คือ AppleScript:

on run {input, parameters}
    -- do shell script "/usr/bin/find " & input & " -type f -name .DS_Store -delete -print"
    display alert "Path: " & input
end run

ปัญหาคือเส้นทางที่ผ่านโดยบริการ (ในตัวแปรinput) ดูเหมือนว่า:

Macintosh HD:Users:Matthew:Documents:Programming:Apple Scripts:

และเพื่อให้คำสั่งดำเนินการอย่างถูกต้องเส้นทางต้องมีลักษณะดังนี้:

Macintosh\ HD/Users/Matthew/Documents/Programming/Apple\ Scripts/

ดังนั้นมีวิธีการแปลเส้นทางแรกเป็นเส้นทางที่สองหรือไม่ ฉันหวังว่าจะมีฟังก์ชั่นหลักที่รองรับสิ่งนี้ แต่ฉันคิดว่า regex / find / replace / etc บางชนิดจะใช้งานได้? ฉันคุ้นเคยกับ HTML / CSS / Javascript / PHP ไม่ใช่กับ Cocoa / AppleScript / C ทิศทางหรือข้อเสนอแนะใด ๆ จะดีมาก!

คำตอบ:


8

quoted form of the POSIX path of inputใช้ หากไม่มีquoted form ofส่วนมันจะไม่จัดการกับตัวละครตลก (เช่นช่องว่าง) ในชื่อไฟล์อย่างถูกต้อง ดูtechnote ของ Appleนี้


6

ตกลง ... มันง่ายกว่าที่ฉันรู้ หลังจาก Googling แล้วดูเหมือนว่าสิ่งที่ฉันต้องการที่นี่คือPOSIX path ofคำสั่ง สิ่งนี้จะแปลงเส้นทางที่กำหนดเป็นเส้นทางสไตล์ Unix ซึ่งเป็นประเภทของเส้นทางที่คุณจะเห็น / ใช้ในเทอร์มินัล ดังนั้น:

POSIX path of input

ให้เส้นทางฉันเหมือน:

/Users/Matthew/Documents/Programming/Apple Scripts/

ดูเหมือนว่าจะต้องคำนึงถึงว่าคุณต้องการเพียง/จุดเริ่มต้นของเส้นทางไม่ใช่ชื่อฮาร์ดไดรฟ์ อย่างไรก็ตามจะไม่ยกเว้น\ช่องว่าง (หรือจัดการอักขระพิเศษ) ในพา ธ ดังนั้นตามคำตอบอื่น ๆ ที่นี่คุณต้องวางเส้นทางในเครื่องหมายคำพูด ( "หรือ') เพื่อให้การเว้นวรรค (หรืออักขระพิเศษ) ถูกตีความอย่างแท้จริง quoted form ofคุณประสบความสำเร็จนี้ได้โดยใช้ นี่มันคือ:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'

2
/ที่จุดเริ่มต้นของเส้นทางเป็นปริมาณการบูต ฮาร์ดไดรฟ์อื่น ๆ อยู่ภายใต้/Volumes/
Josh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.