AppleScript: если файл не существует - PullRequest
3 голосов
/ 11 июля 2009

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

7 голосов
/ 14 июля 2009

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

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"

НТН

3 голосов
/ 13 июля 2009

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

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

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

0 голосов
/ 11 июля 2009

Звучит как хорошее место для блока try ... on error . Я считаю, что следующее должно делать то, что вы хотите:

tell application "Finder"
   try
      open "File:Path:To:the:script"
   on error
      open "File:Path:To:the:Anotherscript"
   end try
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...