如何将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,但不熟悉Cocoa / AppleScript / C。任何方向或建议将是巨大的!

Answers:



6

好的...这比我想象的要容易。经过一番谷歌搜索后,看起来我需要的是POSIX path of命令。这会将给定路径转换为Unix样式路径,这是您将在Terminal中看到/使用的路径类型。所以:

POSIX path of input

给我这样的路径:

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

似乎要考虑到,您只需要/在路径的开头输入a即可,而不是硬盘名称。但是,它不会\在路径中转义空格(或处理特殊字符)。因此,正如这里的另一个答案所提到的,您需要将路径放在引号("')中,以便对这些空格(或特殊字符)进行字面解释。您可以使用完成此操作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)2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.