Проблема AppleScript Finder «открыть с помощью»

#applescript #using #finder #tell

#applescript #использование #поисковик #скажите

Вопрос:

У меня возникли некоторые проблемы с написанием сценария (того, что, как я думал, будет) очень простого раздела того, над чем я работаю. В принципе, я хочу сказать Finder открыть файл с помощью определенного приложения. Просто, не так ли? Из того, что я прочитал, я должен быть в состоянии использовать:

 tell application "Finder"
    open "the_file" using "the_application"
end tell
  

Проблема в том, что Finder, похоже, тратит чертовски много времени на поиск приложения. Когда я использую следующий код:

 set webArcExtract to POSIX file (do shell script "mdfind 'WebArchive Folderizer.app' -onlyin '/Applications/'") as string #Find the Web Archive Extraction Program

tell application "Finder" #Temporary path to save the web archive
    set tempPath to ((home as string) amp; "temp:")
end tell

tell application "Fake" #Magic that saves a webpage as a webarchive
    load URL "www.google.com"
    delay 3
    capture web page as Web Archive saving in tempPath amp; "arc.webarchive"
end tell

tell application "Finder" #Open the arc.webarchive file saved in the tempPath with the WebArchive Folderizer application
    open tempPath amp; "arc.webarchive" using webArcExtract
end tell
  

Значения переменных следующие:

tempPath: «OSX_Data:Пользователи: user:» webArcExtract: «OSX: Приложения: Утилиты:WebArchive Folderizer.app»

Ошибка, которую я получаю при попытке запустить код, возникает в строке open tempPath amp; «arc.webarchive» с использованием webArcExtract. Из Finder появляется сообщение о том, что «Приложение не может быть найдено».

Я действительно озадачен этим. Я ЗНАЮ, что путь правильный, и я знаю, что приложение может открывать файлы таким образом. Я могу использовать Finder, чтобы перейти к файлу arc.webarchive, который я пытаюсь открыть, щелкнуть правой кнопкой мыши по файлу и выбрать «открыть с помощью> WebArchive Folderizer», и это работает отлично.

Есть предложения?

Ответ №1:

Вот пара предложений. 1) более простой способ получить путь к приложению — это просто использовать команду applescript «path to», чтобы что-то вроде этого должно сработать…

 set theFile to (path to desktop as text) amp; "a.txt"
set appPath to path to application "TextWrangler"
tell application "Finder" to open file theFile using appPath
  

2) Вам не нужен Finder для временного пути, снова просто используйте «путь к»…

 set tempPath to (path to home folder as text) amp; "temp:"
  

3) наконец, здесь вам нужен спецификатор файла, поэтому добавьте ключевое слово «file» перед путем к файлу, как я сделал в # 1…

 tell application "Finder"
    open file (tempPath amp; "arc.webarchive") using webArcExtract
end tell
  

Я надеюсь, что это поможет.

Комментарии:

1. Ого! Я знал, что это что-то простое. Отсутствует существительное «файл». ( facepalm ) Теперь я чувствую себя идиотом. Также спасибо за подсказку о «пути к». Очень удобно. Я буду использовать это постоянно. Я подумал, что есть лучший способ сделать это.

2. 1; стоит отметить одну тонкость: path to на самом деле возвращает не строку пути, как можно было бы предположить, а alias объект, указывающий на файл; чтобы превратить этот объект в строку пути в формате HFS, используйте appPath as text (как в ответе), для получения строки пути в формате POSIX используйте POSIX path of appPath .