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