Получение Unix-пути к нескольким файлам / папкам в Службе Automator

Я хочу получить путь (нескольких) файлов (ы, папки) в Службе Automator, выбрав их в Finder, а затем использовать их в команде оболочки.

у меня уже есть что-то вроде этого:

Запустить AppleScript:

on run {input, parameters}
tell application "Terminal"
    activate
    do script with command "clamscan --bell -i " & POSIX path of input
end tell

end run

это работает, но только для одного файла или папки, и он не преобразует /path/file with spaces до /path/file with spaces.

Итак, как это исправить?

18
задан COOL_IRON
17.11.2022 9:38 Количество просмотров материала 3286
Распечатать страницу

2 ответа

Так, как вы делаете это Automator С Запустить AppleScript acton, это будет делать то, что вам нужно:

on run {input, parameters}

    set theItemsToScanList to {}
    repeat with i from 1 to count input
        set end of theItemsToScanList to quoted form of (POSIX path of (item i of input as string)) & space
    end repeat

    tell application "Terminal"
        activate
        do script with command "clamscan --bell -i " & theItemsToScanList
    end tell

end run

не нужно усложнять и идти через канитель показано в другой ответ!


или если вы решите сделать это в простом AppleScript скрипт/приложение, тогда это сделает чего вы нужно:

set theseItems to application "Finder"'s selection

set theItemsToScanList to {}
repeat with i from 1 to count theseItems
    set end of theItemsToScanList to quoted form of (POSIX path of (item i of theseItems as string)) & space
end repeat

tell application "Terminal"
    activate
    do script with command "clamscan --bell -i " & theItemsToScanList
end tell

Примечание:пример AppleScript код выше только что, и не включает в себя какие-либо обработка ошибок как может быть уместно / необходимо / хотел, бремя лежит на пользователе, чтобы добавить любой обработка ошибок любой пример кода представлены и / или код написано за себя.

0
отвечен user3439894 2022-11-18 17:26

это работает для меня, используя последнюю версию Sierra

property posixPathofSelectedFinderItems : {}
property QposixPathofSelectedFinderItems : {}
-- stores the selected files in the active finder window
-- in the variable "these_items"
tell application "Finder"
    set these_items to the selection
end tell

-- returns the Posix Path of each of those files and 
-- stores all of that info in the "posixPathofSelectedFinderItems"
-- as a list
repeat with i from 1 to the count of these_items
    set this_item to (item i of these_items) as alias
    set this_info to POSIX path of this_item
    set end of posixPathofSelectedFinderItems to this_info
end repeat

repeat with i from 1 to number of items in posixPathofSelectedFinderItems
    set this_item to item i of posixPathofSelectedFinderItems
    set this_item to quoted form of this_item
    set end of QposixPathofSelectedFinderItems to (this_item & " ")
end repeat
tell application "Terminal"
    activate
    do script with command "clamscan --bell -i " & items of QposixPathofSelectedFinderItems
end tell
set posixPathofSelectedFinderItems to {}
set QposixPathofSelectedFinderItems to {}
0
отвечен wch1zpink 2022-11-18 19:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

applescript
automator
shell
terminal
unix
Вверх