В прошлый раз мы подняли тему мощнейшего инструмента в OSX — Automator. В комментариях я попросил указать задачи, которые бы Вам хотелось автоматизировать – получил оживленную реакцию. Задачи нашлись, начнем их решать!
Для справки. Отто – именно так зовут робота, который изображен на иконке приложения Automator.
На сегодня я отобрал простую и в тоже время распространённую задачу. Мы потренируемся автоматически сортировать содержимое папки Downloads, а затем сможем повторять эту задачу для любых других папок и с разными целями.
Задача
Необходимо автоматически переносить все файлы, загружаемые в папку Downloads, в отдельные папки, соответствующие их типу.
Возможные типы файлов:
- изображения
- документы
- архивы
- видео
- торренты
Решение
К сожалению, Automator не поддерживает операции ветвления, т.е. создать конструкцию ЕСЛИ → ТО → ИНАЧЕ нельзя. Поэтому придется делать достаточно длительную линейную конструкцию, которая последовательно решит задачу.
Сортировку будем проводить по следующему принципу. Есть папка-основа Downloads, в ней созданы подпапки для всех типов данных: Изображения, Архивы, Видео и т.д.
1. Создаем новый автомат — Действие папки. Для решения задачи потребуются компоненты из раздела Файлы и папки и Утилиты, конкретно:
- Установить значение переменной
- Получить значение переменной
- Получить указанные объекты Finder
- Получить содержимое папок
- Фильтровать объекты Finder
- Переместить объекты Finder
На скриншоте показан полностью рабочий цикл для изображений и архивов, создать дополнительные блоки для данного процесса труда не составит.
2. Создаем конструкцию как на изображении. Рассказываю по порядку что делаем:
- Чтобы добавить универсальности данному автомату, используем переменную, назовем её Целевая папка, в неё будет записываться информация о том, в какой папке мы собираемся делать сортировку данных.
- Получаем содержимое целевой папки, с которым в дальнейшем будем работать.
- Устанавливаем фильтр на содержимое, для получения списка файлов. Тут есть нюанс, для изображений можем легко выбрать предустановленный тип, а вот для архивов придется прописывать расширения самостоятельно.
- Перемещаем объекты в целевую директорию.
- Добавляем блок чтения нашей переменной. Обязательно выставляя в параметрах значение: Игнорировать входные данные этого действия, иначе могут быть захвачены данные из прошлого шага итерации.
- Переходим к п.2, цикл повторять для каждого типа данных.
Совет 1: для ускорения процесса нахождения необходимых компонентов, можно использовать поиск в верхней части интерфейса автоматора. Сами компоненты быстро добавляются двойным кликом по ним.
Совет 2: созданные автоматы можно добавлять к любой папке, просто кликнув по ней правой кнопкой и выбрав пункт Службы → Настройка действий папки…
Заключение
Рассмотрен еще один вариант использования мощнейшего инструмента, и я продолжаю внимательно изучать комментарии о том, что автоматизировать еще. Предлагайте!
P.S. Ваши вопросы о сортировке почты я записал и работаю над статьёй.
34 комментариев
Форум →Ну вот…все материалы только на русском языке…а если я юзаю Mac на английском? :)
@emeric, ну если у вас интерфейс на английском, тогда видимо проблем с языком нет, сможете легко перевести :)
@Виктор Колышев, ну вот, а если я юзаю Мак на китайском? :)
Какой вы непредусмотрительный..
Подобные статьи-уроки считаю крайне полезными и интересными, нежели отчеты о доходах разных команий, слухах и тому подобного. Автоматор штука интересная судя по всему! Будем следить за продолжением!!
А если это торрент файл, то он докатается сначала, а потом переместиться в другую папку?
@upup, под торрент файлом подразумевается файл с расширением *.torrent
Если настроить автоматический перенос, могут быть проблемы + все торренто-качалки умеют сами перемещать файлы в указанную папку.
@upup, Предлагаю вам решение: мюТоррент не умеет сортировать файлы, но умеет отправлять скачанные файлы в другую папку, начните сортировку автоматором в ней, так же, естественно, торрент может держать те файлы которые он качает в выбранной вами папке. Я сейчас пытаюсь заставить мюТоррент держать качаемые файлы в папке /Downloads/InProgress/ (туда же и .torrent кидаются автоматором, а мюТоррент их оттуда берет), готовые файлы кидать в /Downloads и оттуда их сортировать по остальным папкам.
А можно немного подробнее насчет переменной? Не очень понятно как она используется:
– Какое значение проставляется в эту переменную? Почему именно оно (на workflow просто инструкция – установить значение переменной. А какое значение непонятно)
– Как эта переменная дальше используется? В каких инструкциях? На схеме видно только что она устанавливается. А на что влияет не очевидно
@D@rkmind, переменная – это единица хранения данных, в автоматоре она универсальная и может хранить как отдельный символ, так и длинные коллекции.
В переменную подставляется значение действия, которое предшествовало её вызову, т.е. если это действие выбор папки, то в неё поместится путь к этой папке вместе с её названием. В нашем примере мы помещаем в неё нашу целевую папку, чтобы иметь возможность в дальнейшем к ней обращаться.
На схеме она вызывается повторно после завершения действий с первым типом данных, в нашем случае Картинки. Это позволяет опросить папку повторно не учитывая те файлы, которые уже были перемещены.
@Виктор Колышев, Спасибо. Теперь более понятно. А где мы к ней обращаемся? Какая инструкция использует ее значение?
@D@rkmind, её значение используется любой конструкцией, которая расположена сразу за вызовом данной переменной.
Например, в нашем примере мы указали что в переменную требуется записать нашу начальную папку. В следующий раз мы вызываем нашу переменную, а сразу за ней компонент Получить содержимое папки. Т.е. переменная позволяет получить содержимое именно нашей папки, а не какой-то другой, так как целевая папка могла измениться из-за прошлой операции, например копирования/перемещения данных в другую папку.
Почему то инструкцию “Filter Finder Items” не удается заставить работать. Все остальное нормально – если ее убрать, то все файлы из папки Downloads перемещаются в указанную директорию.
А вот если добавить Filter Finder Items, то никакие не перемещаются. Настроенно вроде как в статье (да и должно бы работать):
“All of the following are true”. “Kind” “is” “image”
Но ни jpg, ни png не перемещаются. Опять же, если Фильтр убрать, то перемещаются
че-то такое ощущение, что этот фильтр не работает от слова вообще. Пробовал менять All на Any. Пробовал менять image на text и подсовывать ему .txt файлы. Пробовал делать “File extension is txt”. Ни в каком виде не прокатывает. Может Йосэмити с ума сходит?
@D@rkmind, есть подозрение, что где-то что-то пропускаете. Можно провести тестирование ввода данных, для этого в начало тела автомата поместите компонент Получить указанные объекты. После этого удалите все компоненты и по шагам их добавляйте, смотрите какой результат в каждом компоненте. Это позволит более точно понять где происходит сбой.
@Виктор Колышев, скачайте мой вариант https://yadi.sk/d/MyaC9LZ9gQ7nY он точно рабочий
@Виктор Колышев, вот уже в течении года пытаюсь настроить по вышеописанной схеме – и никак не получается… Может зальете еще раз свой пример, я хоть на нем пойму свои ошибки… Вот у меня первый тип файлов фильтруется а дальше не идет…
@Виктор Колышев, ps пытался найти вас в мордобуке – безуспешно! =)))
Виктор, спасибо за цикл статей.
Вот моя «хотелка». Никак не могу с помощью Automator и Hazel сделать следующее:
есть папка (наприаер «Клиенты») и внутри неё папки по искомым фирмам (ООО, ОАО и так далее). При создании новой папки у меня настроено действие: ЕСЛИ new folder ТО create subfolder structure. Иначе говоря, как только я завожу новую папку под клиента, внутри неё формируется структра из подпапок («Докуметы», «Входящее», «Материалы» и так далее).
Виктор, если возможность автоматически сделать расстановку в папках? Что я имею ввиду. Захожу в «Клиенты» (корень), а там ВСЕГДА все папки расставлены по имени. Захожу в клиентскую папку, а там всё расставлено ВСЕГДА по типу. То есть не надо ручками указывать для каждой папки, что мол здесь — по названию, а вот здесь — по типу.
Уверен, что это не самый важный процесс автоматизации, но он помагает содержать всё в порядке и именно так, как удобно (иными словами — гибко). Если знаете решение (даже в теории) — намекните. Не могу составить грамотный поисковый запрос на английском, чтобы покапаться на форумах.
@SevaGoodz, два дня думаю над вашей задаче, пока особо ничего не придумал, кроме как создавать папку не через классический способ, а через автоматор и соответственно создать под него автомат. Т.е. создаем папку, создаем структуру, а там устанавливаем какой вид должен использоваться. Но решение очень кривое и при смене вида, нужно будет опять менять руками.
А так в автоматоре есть сменить вид папки, т.е. именно то что нужно вам.
Еще вариант, это сделать отдельную кнопку, вытащить её в Finder и быстро менять вид при входе в один клик, но опять как-то костыльно.
Помогите пож-ста, почему у меня все “команды” в автоматоре на англ ?
скрин http://cs623817.vk.me/v623817087/32fbb/9lEqt5KWH4c.jpg
@Chinik, Решение проблемы: Язык системы был
1-Русский
2-Английский
3-Немецкий
Удалил Немецкий, перезагрузил Автоматор – все стало на русском
@Chinik, перезапустите автоматор
А как насчет работы с внешними ресурсами в сети?
Допустим у меня есть папка на рабочем столе(флешке), и я хочу её синхронизировать с облаком (любым), и что бы это происходило либо вручную, либо автоматически по времени..
Возможно ли это с помощью автоматор? или есть какие другие софтины?
@Surfer, можно сделать Сервис, который запускать раз в неделю и переносить содержимое папки, которого еще нет в целевой. Придется немного bash скрипт использовать.
Опишите подробно что и как планируется получить.
Замечательная колонка! Автор молодец! Буду следить дальше.
Все конечно круто. Но ничего не понятно!!! что то кудлато нужно добавить, потом еще что то сделать. Я конечно понял что автор давно юзает Mac. Если хочешь поделиться знаниями, то пиши на языке тех людей которые откроют эту программу первый раз, а не так как будто я миллион раз в ней что то делал! Статья пустышка. полезной инфы ноль… Я так ни одной статьи и не нашел что бы нормально по русски расписали хоть один пример. Что бы тебя так в универе учили либо в школе. Да вот это сюда это так добавь вот это и все готова давай дерзай. И потом добавить осталось, да че тут сложного!!
У меня один вопрос – ЗАЧЕМ?
Для подобного есть прекрасная вещь – Hazel, делается все в пару кликов и работает четко и стабильно.
Безграничность этого просто пугает! От этого хочется знать еще больше. Спасибо и продолжайте! :)
Есть такая ситуация, скачивается сериал (одной папкой), и я хочу переместить целую папку в зависимости от того какие файлы там лежат. Вот только что то не соображаю – возможно ли это?
И еще такая вещь – как сделать разберусь, но вот нюансы, вообщем собираюсь заставить автоматор перекидывать файлы на хард пока он подключен (не бэкап а просто фильмы) но вот что будет если я его отключу(при помощи eject естественно)? Какими файлы на диске будут понятно, но какова реакция самого автоматора на такие вещи?
Помогите собрать задание для автоматора?
Задача: с сети переодически качается папка с файлами вида
01 имя исполнителя и название песни.mp3
02 имя исполнителя и название песни.mp3
99 имя исполнителя и название песни.mp3
100 имя исполнителя и название песни.mp3
199 имя исполнителя и название песни.mp3
(обычно имена исполнителя уникальны), требуется избавиться от начальных символов в именах файлов.
Ручное переименование файлов утомительно :(
—
Как дополнение, полученную папку с переименованными файлами добавить в тунец и чтоб не расползались по всей медиатеке сделать их одним альбомом с тегом NEW_ALBOM и одноименным плейлистом.
__
не смог самостоятельно разобраться как это сделать :(
Здравствуйте! Подскажите пожалуйста, столкнулся с проблемой. Если Фильтровать объекты finder ничего не возвращает, то следующее действие с перемещением файлов падает с ошибкой, и дальше скрипт автоматора не выполняется. Следовательно остальные типы файлов не перемещаются, хотя подходящие по условиям в папке имеются. Как быть, как игнорировать пустой ответ фильтра?
Спасибо.
Добрый день!
Как в AUTOMATOR:
1. посмотреть созданные процессы (в частности действия для папок)
2. как отключить созданные процессы, которые с течением времени например стали не нужны.
Работало частично, пока не нашел ошибку у Вас: в блоке “фильтровать объекты Finder” параметр “Все” нужно изменить на “любой из”, иначе будут искаться файлы, содержащие в расширении и zip, и rar, и 7z. Теперь всё работает замечательно.
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как сохранить все скидочные и бонусные карты в iPhone
Что делать, если Safari на iPhone не может подключиться к сети
Хрустит и скрипит экран iPhone 6 (6s, 7)
Как удаленно отключить iPhone, iPad или Mac от своего Apple ID
Как обойти ограничение на загрузку приложений по LTE
iPhone не подключается к домашней сети Wi-Fi. Что делать?
Чем заменить стандартный плеер на iPhone
Почему iPhone тормозит во время записи экрана