Як змінити шлях 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/

Отже, чи є спосіб перекласти перший шлях на другий шлях? Я сподівався на основну функцію, яка впорається з цим. Але я припускаю, що якийсь регулярний вираз / знайти / замінити / тощо буде працювати? Я знайомий з HTML / CSS / Javascript / PHP, а не з какао / AppleScript / C. Будь-який напрямок чи пропозиції були б чудовими!

Відповіді:



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/
Джош
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.