Applescript 将文件夹设置为变量(如果存在)或创建新文件夹(如果不存在)的缩写';T

Applescript 将文件夹设置为变量(如果存在)或创建新文件夹(如果不存在)的缩写';T,applescript,Applescript,我知道 if folder "Macintosh HD:Users:me:Desktop:thing" exists then set f to folder "Macintosh HD:Users:me:Desktop:thing else set f to make new folder at "Macintosh HD:Users:me:Desktop" with properties {name: "thing"} end 及 有捷径吗?当然,您可以设置变量的路径,但这仍然相当

我知道

if folder "Macintosh HD:Users:me:Desktop:thing" exists then
  set f to folder "Macintosh HD:Users:me:Desktop:thing
else
  set f to make new folder at "Macintosh HD:Users:me:Desktop" with properties {name: "thing"}
end


有捷径吗?当然,您可以设置变量的路径,但这仍然相当冗长。我不太了解“命令”背后的结构,甚至还不知道在哪里或寻找什么来找到更好的方法。这些伪目标导向但真正的查询结构有点令人困惑

在AppleScript中处理文件系统项是出了名的古怪(查找器上下文与系统事件上下文、HFS路径与POSIX路径)

我建议:

  • 坚持使用POSIX路径(使用
    /
    作为根目录和路径分隔符)
  • 通过
    do shell script
    ,使用shell命令以方便和简洁
下面是一个基于通用助手函数的解决方案,该函数接受POSIX文件夹路径,按需创建文件夹,并将先前存在或刚刚创建的文件夹作为
别名
实例返回:

CreateAndroGetFolder(posixPath)上的

执行shell脚本“mkdir-p”&引用posixPath的形式
返回别名(posixPath作为POSIX文件)
结束CreateGetFolder
将f设置为我的CreateAndroGetFolder(POSIX路径为(桌面路径)&“thing”)

AppleScript没有JavaScript和其他语言等三元运算符,因此很难在AppleScript中使if/else语句更简洁。mklement0的解决方案是您能得到的最干净的解决方案。
try
    set f to folder "Macintosh HD:Users:me:Desktop:thing
on error
    set f to make new folder at "Macintosh HD:Users:me:Desktop" with properties {name: "thing"}
end