2010-08-12 39 views
7

好的,我认为这将是一个简单的,但显然我错过了明显的东西。我的代码如下:文件存在的苹果脚本测试

set fileTarget to ((path to desktop folder) & "file$") as string 

if file fileTarget exists then 
    display dialog "it exists" 
else 
    display dialog "it does not exist" 
end if 

容易吧?不幸的是,当我运行脚本时,它返回错误

Can’t get file "OS X:Users:user:Desktop:files$". 

文件是否存在并不重要,这是我得到的错误。我已经尝试了十几种不同的东西,但它仍然困扰着我。

回答

13

我用这个子程序,看是否有文件存在与否:

on FileExists(theFile) -- (String) as Boolean 
    tell application "System Events" 
     if exists file theFile then 
      return true 
     else 
      return false 
     end if 
    end tell 
end FileExists 

加入盐调味。

4

除“存在”是Finder或System Events命令外很容易。这不是一个直接的applescript命令。因此,您必须将其包装在一个告诉应用程序代码块中。仅供参考:这是另一种不需要应用程序的方式。这是有效的,因为当你强制一个“别名”的路径时,它必须存在,否则你会得到一个错误。所以你可以做到以下几点。

set fileTarget to (path to desktop folder as text) & "file$" 

try 
    fileTarget as alias 
    display dialog "it exists" 
on error 
    display dialog "it does not exist" 
end try 

注意:您的代码有错误。你正在使用&运算符来添加字符串,但是你做错了,尽管你运气好的话可以得到正确的答案。当您使用运算符时,运算符两侧的每个对象都必须是一个字符串。 “桌面文件夹路径”不是一个字符串,所以我们首先必须创建一个字符串,然后将字符串“file $”添加到它。所以像这样做...

set fileTarget to (path to desktop folder as text) & "file$" 
+0

他得到的字符串 '从我的'((路径桌面文件夹)“文件$”)。这就是我一直在做这件事的方式,我从来没有遇到过问题。 – 2010-08-12 20:33:03

+0

是的,我知道它是有效的,因为一开始我也是这样做的。 Applescript就是这么好的......它有助于纠正小错误。如果在强制为字符串之前查看添加的结果,则看起来像这样“{别名”Macintosh HD:用户:hmcshane:Desktop:“,”file $“}”。这是2件物品的清单,所以这当然不是我们所追求的。希望知道这个理论稍微好一点,将有助于在未来更复杂的事情,这是行不通的。 – regulus6633 2010-08-12 22:57:47

+0

我从来没有这样想过,但你更清洁。谢谢你的提示。 – 2010-08-13 14:43:08

0

避免原来的错误 不能获取文件“OS X:用户:用户:桌面:文件$”。 只需添加脚本告诉块 告诉应用程序“发现者” 集fileTarget到((路径桌面文件夹)&“文件$”)作为字符串

如果文件fileTarget存在,那么 显示对话框中的“存在” 其他 显示对话框中的“不存在” 结束时,如果 端告诉