AppleScript:如果文件不存在

时间:2009-07-11 14:42:50

标签: applescript

我需要一些方法来确定特定文件是否存在。如果存在则执行一个脚本,如果没有,则执行另一个脚本。这是我在applescript中的逻辑:

If exists "File:Path:To:theFile"

tell application "Finder"
open "File:Path:To:the:script"
end tell

else

tell application "Finder"
open "File:Path:To:the:Anotherscript"
end tell

end if

唯一的问题是,有时当我使用上述逻辑时,脚本无法说找不到文件。我需要一个完整的证明,从来没有失败的方式来查看文件是否存在。我愿意使用终端或者AppleScript。我确定之前有人遇到过这个问题,但我已经在网上寻找答案,但却找不到答案。

3 个答案:

答案 0 :(得分:7)

在你的原始代码中,你给exists函数一个字符串,而不是一个文件,即使它是文件的路径。你必须明确地给它一个文件,或者它就像你试图做的那样对待

exists "god"

exists "tooth fairy"

exists命令不会知道你在说什么。你可以用

return exists alias "the:path:to:a:file" 

但是除非文件实际存在,否则别名不起作用,因此不存在的文件将产生错误。您当然可以捕获错误并对其执行某些操作,但只是将exists函数赋予文件对象更简单。文件对象属于Finder应用程序,因此:

return exists file "the:path:to:a:file" of application "Finder"

HTH

答案 1 :(得分:3)

我使用以下内容查看Finder中的项目是否存在:

on FinderItemExists(thePath)
    try
        set thePath to thePath as alias
    on error
        return false
    end try
    return true
end FinderItemExists

我认为您缺少的是将路径转换为别名。

答案 2 :(得分:0)

这听起来像try...on error block的好地方。我相信以下内容应该做你想要的:

tell application "Finder"
   try
      open "File:Path:To:the:script"
   on error
      open "File:Path:To:the:Anotherscript"
   end try
end tell