在AppleScript中使用带有POSIX路径的“〜”

时间:2015-06-29 14:27:53

标签: macos applescript

如何在以下AppleScript中使用~

info for POSIX path of "Users/[User]/Pictures"

该脚本应该是通用的,但是如果我将Users/[User]替换为~,那么脚本就是这样的

info for POSIX path of "~/Pictures"

我收到目录不可用的错误。

我很感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

~是一个shell的东西,所以它在这种情况下不起作用,但是使用path to还是有一个更简单的方法:

info for POSIX path of (path to pictures folder)

答案 1 :(得分:1)

不确定这个答案是否真的具有普遍性,但由于~由bash shell扩展,但我尝试使用扩展的结果作为路径并且它有效。

info for POSIX path of (do shell script "echo ~/Pictures")
  

{姓名:“图片”,创建日期:日期“2015年7月8日星期三下午6:33:09”,修改日期:日期“2017年2月8日星期三下午2:11:52”,大小:102529438,文件夹:true,别名:false,包文件夹:false,可见:true,扩展名隐藏:false,名称扩展名:缺失值,显示名称:“图片”,默认应用程序:别名“Macintosh HD:System:Library :CoreServices:Finder.app:“,kind:”Folder“,文件夹窗口:{0,0,0,0},文件类型:”“,文件创建者:”“}

对我而言,这样的结果就像这样运行

info for POSIX path of (path to pictures folder)

对于我的情况,扩展~/它很有用,因为在~/中查找不适合Mac的文件夹的情况。实施例

info for POSIX path of (do shell script "echo ~/Projects")
  

{名称:“项目”,创建日期:日期“2016年6月17日星期五上午11:08:50”,修改日期:日期“2017年2月8日星期三下午2:30:08”,大小:130670100,文件夹:true,别名:false,包文件夹:false,可见:true,扩展名隐藏:false,名称扩展名:缺失值,显示名称:“Projects”,默认应用程序:别名“Macintosh HD:System:Library :CoreServices:Finder.app:“,kind:”Folder“,文件夹窗口:{0,0,0,0},文件类型:”“,文件创建者:”“}

但是根据之前的方法,同样失败了。

info for POSIX path of (path to Projects folder)
  

语法错误
  预期“,”但找到了财产。

评论后更新

这适用于主目录中的“非标准”文件夹。

info for alias ((path to home folder as text) & "Projects:")

答案 2 :(得分:0)

无需在AppleScript中使用波浪号(~),它是shell中当前用户主文件夹的快捷方式。

AppleScript中有许多相对路径

path to desktop 

是当前用户的桌面文件夹的别名说明符,相当于

alias "[startup volume]:Users:[current user]:Desktop"

图片文件夹的相对路径是

path to pictures folder  

其他路径

path to music folder
path to applications folder
path to home folder

请查看标准附加词典以获取更多路径

对于某些相对路径,有一个参数来指定域

path to library folder from user domain -- alias "[startup volume]:Users:[current user]:Libary"
path to library folder from local domain -- alias "[startup volume]:Library"
path to library folder from system domain -- alias "[startup volume]:System:Library"

info for是Standard Additions的一个非常古老的部分。它自Leopard以来已被弃用,但它仍然有效。最简单的形式是传递别名说明符:

info for (path to pictures folder )