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

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

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

Благодарю.

2 ответа

Этот скрипт для 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

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

Автоматизация рабочего процесса

Для каждого выбранного файла в 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
Другие вопросы по тегам