Тестирование Applescript на наличие файлов - PullRequest
9 голосов
/ 12 августа 2010

ОК, я думал, что это будет просто, но, видимо, я упускаю что-то очевидное.Мой код выглядит следующим образом:

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$".

. Не имеет значения, существует файл или нет, это та же ошибка, что и я.Я пробовал дюжину разных вещей, но это все равно меня озадачивает.

Ответы [ 3 ]

18 голосов
/ 12 августа 2010

Я использую эту подпрограмму, чтобы увидеть, существует файл или нет:

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

Добавить соль по вкусу.

6 голосов
/ 13 августа 2010

Это просто, за исключением того, что «существует» - это команда Finder или System Events. Это не прямая команда appleScript. Таким образом, вы должны обернуть его в блок кода приложения Tell. К вашему сведению: вот еще один способ, который не требует приложения. Это работает, потому что когда вы приводите путь к «псевдониму», он должен существовать, иначе вы получите ошибку. Таким образом, вы могли бы сделать следующее.

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

ПРИМЕЧАНИЕ: в вашем коде есть ошибка. Вы используете оператор & для добавления строк, но вы делаете это неправильно, хотя вы получаете правильный ответ по счастливой случайности. Когда вы используете оператор &, каждый объект по обе стороны от оператора должен быть строкой. «путь к папке на рабочем столе» не является строкой, поэтому мы должны сначала сделать ее строкой, а затем добавить в нее строку «файл $». Так и делай так ...

set fileTarget to (path to desktop folder as text) & "file$"
0 голосов
/ 10 января 2017

, чтобы избежать оригинальной ошибки Не удается получить файл «OS X: пользователи: пользователь: рабочий стол: файлы $». просто добавьте в скрипт скрипт блока расскажите приложение "Искатель" установите для fileTarget значение ((путь к папке на рабочем столе) & "file $") в виде строки

если файл fileTarget существует, то отобразить диалог "оно существует" еще отобразить диалог "его не существует" конец, если конец сказать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...