2010-08-12 64 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存在,那麼 顯示對話框中的「存在」 其他 顯示對話框中的「不存在」 結束時,如果 端告訴