Поиск файла с использованием AppleScript - PullRequest
0 голосов
/ 12 февраля 2019

кто-нибудь, пожалуйста, объясните, почему это не сработает.Сценарий сам по себе без "if mainReturned =" File "then" работает просто отлично, но когда я добавляю его в другую часть скрипта, все становится странным.Оно выделяет слово «вкл» в 5-й до последней строки сценария, а затем перестает работать и т. Д. Пожалуйста, объясните, как я могу это исправить, чтобы добавить его в другой сценарий?Суть другого сценария в основном заключается в том, что если вы введете слово, сценарий вызовет определенные вещи, например, если бы я должен был ввести работу «Файл», он выполняет это.Но это не сработает.Это формат if mainReturned = "File", тогда

ничего особенного, это единственный код, который я мог бы минимизировать до

                    set SearchDir to choose folder
                            set SearchTerm to text returned of ¬
        (display dialog "Enter your search term below:" default answer "" with icon file "Macintosh HD:Users:<insert user's name.:Documents:robot-icon.png")
        set theResults to SpotlightSearch(SearchTerm, SearchDir)
        if theResults is not {""} then
            set theChoice to choose from list theResults with prompt ¬
                "Here are the files that match the search term \"" & SearchTerm & ¬
                "\" in directory \"" & SearchDir & "\":" cancel button name ¬
                "Quit" OK button name "Reveal in Finder"
            if theChoice is not false then
                tell application "Finder"
                    activate
                    reveal (POSIX file theChoice) as alias
                end tell
            end if
        else
            display dialog "No Results Found." buttons ¬
                {"Quit", "Search Again"} default button 2 with icon file "Macintosh HD:Users:<insert user's name>:Documents:robot-icon.png"
            if button returned of result is "Quit" then exit repeat
        end if
        on SpotlightSearch(SearchTerm, SearchDir)
            set theResults to paragraphs of ¬
                (do shell script "mdfind " & quoted form of SearchTerm & ¬
                    " -onlyin " & quoted form of POSIX path of SearchDir)
        end SpotlightSearch

мои ожидаемые результаты -

        if mainReturned = "File" then
display dialog "Keyword '" & mainReturned & "' is being executed..." buttons {"OK"} default button 1 with title "Auto-Web" with icon file "Macintosh HD:Users:<insert user name>:Documents:robot-icon.png" giving up after 1
        set SearchDir to choose folder
                    set SearchTerm to text returned of ¬
        (display dialog "Enter your search term below:" default answer "" with icon file "Macintosh HD:Users:<insert user's name.:Documents:robot-icon.png")
        set theResults to SpotlightSearch(SearchTerm, SearchDir)
        if theResults is not {""} then
            set theChoice to choose from list theResults with prompt ¬
                "Here are the files that match the search term \"" & SearchTerm & ¬
                "\" in directory \"" & SearchDir & "\":" cancel button name ¬
                "Quit" OK button name "Reveal in Finder"
            if theChoice is not false then
                tell application "Finder"
                    activate
                    reveal (POSIX file theChoice) as alias
                end tell
            end if
        else
            display dialog "No Results Found." buttons ¬
                {"Quit", "Search Again"} default button 2 with icon file "Macintosh HD:Users:<insert user's name>:Documents:robot-icon.png"
            if button returned of result is "Quit" then exit repeat
        end if
        on SpotlightSearch(SearchTerm, SearchDir)
            set theResults to paragraphs of ¬
                (do shell script "mdfind " & quoted form of SearchTerm & ¬
                    " -onlyin " & quoted form of POSIX path of SearchDir)
        end SpotlightSearch

но в действительности сценарий выделяет слово «в» от 5-й до последней строки кода и говорит «Синтаксическая ошибка: ожидается« еще »и т. Д., Но найдено« вкл »».Может кто-нибудь сделать так, чтобы этот код был совместим с тем, что я пытаюсь сделать?Это было бы наиболее ценно

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Ошибка довольно очевидна: вы должны сбалансировать оператор if с end if перед обработчиком SpotlightSearch

if mainReturned = "File" then    
   ...
   if theResults is not {""} then
      ...
   else 
      ...
   end if    
end if

on SpotlightSearch(SearchTerm, SearchDir)
    set theResults to paragraphs of ¬
        (do shell script "mdfind " & quoted form of SearchTerm & ¬
            " -onlyin " & quoted form of POSIX path of SearchDir)
end SpotlightSearch
0 голосов
/ 12 февраля 2019

Спасибо вам большое за вашу помощь и желание помочь !!!Я многому научился у всех вас, и я люблю этот сайт и доброту, представленную на нем.Я нашел ответ.Мне нужно было создать второй сценарий и ввести его в папку сценариев приложений, а затем использовать файл сценария запуска команды "СПАСИБО ЗА ПОМОЩЬ !!!!!!

0 голосов
/ 12 февраля 2019

Недостаточно контекста, чтобы предоставить работающий ответ, но вам не хватает соответствующего конца, если оператор для добавленного , если mainReturned = "File" оператор.Это немного помогает, если вы форматируете и / или комментируете свой код, чтобы группировать вещи, чтобы не потеряться.

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