Как проверить папку, существующую в Apple Script? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь запустить «cd Desktop» в терминале, если папка Desktop существует. Вот мой текущий код:

tell application "Terminal"
    activate
    try
        if exists folder "Desktop" then
            do script "cd Desktop" in tab 1 of window 1
        end if
        do script "java -jar /Users/Harry/Desktop/Candle.app/Contents/candle.jar" in tab 1 of window 1
    on error
        if exists folder "Desktop" then
            do script "cd Desktop"
        end if
        do script "java -jar /Users/Harry/Desktop/Candle.app/Contents/candle.jar"
    end try
end tell

Я очень новичок в сценарии Apple, поэтому я не знаю, почему это вызывает синтаксическую ошибку при сохранении / компиляции. Кто-нибудь может помочь ??? Спасибо.

1 Ответ

0 голосов
/ 12 января 2020

AppleScript - довольно минимальный язык и использует другие приложения для выполнения вещей, о которых он не знает.

Вы получаете сообщение об ошибке, потому что Terminal не знает, что срок folder есть. Что-то вроде Finder или Системные события может использоваться для обработки файловых объектов, а также вы можете принудительно указать путь к псевдониму, который приведет к ошибке, если он не существует - обратите внимание, что вы используете термина exists в этом случае будет из стандартного набора, который предназначен для общих объектов, поэтому он вернет true, поскольку строка существует.

Также обратите внимание, что каждый оператор do script будет в свое собственное окно, если не указано иное. Я думаю, что вы ищете что-то вроде:

set theFolder to "/Users/you/Desktop"
tell application "Finder" to set folderExists to exists (folder theFolder as POSIX file)
if folderExists then
    tell application "Terminal"
        activate
        try
            do script "cd Desktop" in tab 1 of window 1
        on error errmess
            log errmess
            do script "cd Desktop"
        end try
        delay 0.05
        do script "echo testing" in tab 1 of window 1
    end tell
else
    beep
end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...