Automator / AppleScript, чтобы найти то же имя файла с другим расширением в том же каталоге - PullRequest
1 голос
/ 12 марта 2012

Я хотел бы создать действие automator для управления файлами DNG / XMP.Я хотел бы иметь возможность перетащить DNG (или несколько) на действие, которое отправит DNG и соответствующий файл XMP в корзину.Файлы имеют одинаковые имена, за исключением расширения, они находятся в одном каталоге.Например, IMGP1361.DNG и IMGP1361.xmp

Это было бы простой задачей для сценария оболочки, но есть ли способ сделать это в Automator (чтобы узнать больше об Automator)?Есть ли способ получить имя файла элемента поиска входных данных, изменить его в переменной и использовать его в качестве входных данных для другого действия?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Этот скрипт для Automator удалит все файлы, которые имеют одинаковый префикс и чье расширение указано в команде grep. Вы также можете добавить дополнительные расширения. (xmp | DNG | pdf | xls)

on run {input, parameters}
try
    repeat with anItem in input
        tell (info for anItem) to set {theName, theExt} to {name, name extension}
        set shortName to text 1 thru ((get offset of "." & theExt in theName) - 1) of theName
        tell application "Finder"
            set parentFolder to parent of anItem as alias
            set matchList to every paragraph of (do shell script "ls " & POSIX path of parentFolder & " | grep -E '" & shortName & ".(xmp|DNG)'")
            delete (every file of parentFolder whose name is in matchList)
        end tell
    end repeat
end try
end run
1 голос
/ 12 марта 2012

ОК, понял. Вы можете использовать AppleScript, указанный ниже, внутри рабочего процесса Automator следующим образом:

Automator workflow

Для каждого выбранного файла в Finder, если его расширение находится в ext_list, оно будет перемещено в корзину, как и все другие файлы с таким же именем в той же папке, расширение которых один из них в also_these_extensions.

Это может быть полезно, например, также для очистки папки с вспомогательными файлами LaTeX: просто поместите "tex" в ext_list и все другие расширения (например, "aux", "dvi", "log") в also_these_extensions.

Выбранные файлы не обязательно должны находиться в одной папке; Вы также можете выбрать несколько элементов в окне результатов поиска Spotlight.

on run {input, parameters}
    -- for every item having one of these extensions:
    set ext_list to {"dng"}
    -- also process items with same name but these extensions:
    set other_ext_list to {"xmp"}

    tell application "Finder"
        set the_delete_list to {}
        set delete_list to a reference to the_delete_list
        -- populate list of items to delete
        repeat with the_item in input
            set the_item to (the_item as alias)
            if name extension of the_item is in ext_list then
                copy the_item to the end of delete_list
                set parent_folder to (container of the_item) as alias as text
                set item_name to text 1 thru ((length of (the_item's name as text)) - (length of (the_item's name extension as text))) of (the_item's name as text)
                repeat with ext in other_ext_list
                    try
                        copy ((parent_folder & item_name & ext) as alias) to the end of delete_list
                    end try
                end repeat
            end if
        end repeat
        -- delete the items, show info dialog
        move the_delete_list to the trash
        display dialog "Moved " & (length of the_delete_list) & " files to the Trash." buttons {"OK"}
    end tell
end run
...