将文件夹设置为变量(如果存在)的简写或如果不存在则为新变量?

时间:2017-03-16 22:04:56

标签: 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

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

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

1 个答案:

答案 0 :(得分:2)

使用AppleScript中的文件系统项目非常古怪(Finder上下文与系统事件上下文,HFS路径与POSIX路径)。

我建议:

  • 坚持POSIX路径(/作为根目录和路径分隔符)
  • 使用shell命令以方便和简洁,通过do shell script

这是一个基于通用帮助函数的解决方案,它接受POSIX文件夹路径,按需创建文件夹,并将预先存在或刚刚创建的文件夹作为alias实例返回:

on createAndOrGetFolder(posixPath)
    do shell script "mkdir -p " & quoted form of posixPath
    return alias (posixPath as POSIX file)
end createAndOrGetFolder

set f to my createAndOrGetFolder(POSIX path of (path to desktop) & "thing")