Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Проверка Applescript на наличие файла

Автор вопроса: EightQuarterBitОтветов: 3

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

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

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

fileif-statementapplescript

Ответы

Ответ 1 · рейтинг 22 · Philip Regan

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

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

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

Ответ 2 · рейтинг 7 · regulus6633

Это просто, за исключением того, что "существует" - это команда 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$"

Ответ 3 · Tom

чтобы избежать исходной ошибки Не удается получить файл "OS X: Пользователи: пользователь: Рабочий стол: файлы $". просто добавьте в скрипт блок сообщения, сообщите приложению "Finder", установите для fileTarget значение ((путь к папке на рабочем столе) и "file $") в виде строки

если файл fileTarget существует, то отобразите диалоговое окно "он существует", иначе отобразите диалоговое окно "он не существует" end if end tell

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы