2009-07-11 2 views
2

Мне нужен способ определить, существует ли файл. Если он существует, сделайте один скрипт, если нет, тогда выполните другой скрипт. Вот моя логика в 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. Я уверен, что кто-то сталкивался с этим раньше, но я искал ответы в Интернете, но не смог найти его.

ответ

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 
+0

Я использовал точный код, приведенный выше, но она до сих пор не удается иногда. – 2009-07-11 15:26:38

3

Я использую следующие, чтобы увидеть, если элемент в Finder существует:

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

Я думаю, что вы пропустили это преобразование пути к псевдониму.

6

В исходном коде вы предоставляете функцию существования строку, а не файл, хотя это путь к файлу. Вы должны явно давать файл, или он относится к нему так же, как если бы вы пытались сделать

exists "god" 

или

exists "tooth fairy" 

существует команда не будет знать, что вы говорите , Вы можете использовать

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

но псевдонимы не работать, если файл на самом деле не существует, поэтому не существует файл будет создавать ошибку. Вы могли бы, конечно, поймать ошибку и сделать с ней что-то, но проще просто предоставить функции существования файловый объект. Файловые объекты относятся к приложению Finder, так:

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

НТН

Смежные вопросы