Automator Переместить превью / изображение большого пальца в папку с именем файла, похожим на изображение (Applescript) - PullRequest
0 голосов
/ 03 июня 2018

Я ПОЛУЧАЮ 2 ОШИБКИ.

ЦЕЛЬ: В моей папке загрузок у меня есть:

ПАПКА: имя файла 001 ИЗОБРАЖЕНИЕ: имя файла 001 preview.jpg ПАПКА: имя файла 002 ИЗОБРАЖЕНИЕ: предварительный просмотр файла имя файла 002.jpg FOLDER: имя_файла 003 ИЗОБРАЖЕНИЕ: имя_файла 003 preview.jpg

Я хочу, чтобы Automator переместил все предварительные просмотры в соответствующие папки.

Итак, я следовал аналогичному учебнику иЯ получил это до сих пор:

1-е)

on run {input, parameters}
    return input
end run

2-е) Элементы поиска фильтра: Вид - папка 3-е) Задать значение переменной: FilePath (путь, по которому должно идти изображение) 4-е)В ЭТОМ ШАГЕ Я ПОЛУЧАЮ ОШИБКУ: проверьте свойства действий (я новичок, так что не знаю).

on run {input, parameters}
    tell application "Finder"
        set FileName to name of file input
    end tell
end run

5th) Установите значение переменной: FilePath (путь, по которому должно идти изображение) 6-й) Элементы поиска фильтра: «Тип изображения» И имя содержит {FilePath} (тот же путь, что и имя папки).

Проблема возникает с {FilePath}, Automator не принимает только что созданную переменную: FilePath, в поле Содержит вновь созданная переменная с именем FilePath.

7th) Получить значениеПеременная: FileName 8th) Переместить элементы Finder в: FilePath

Вот рабочий поток file .

1 Ответ

0 голосов
/ 04 июня 2018

Ссылка на ваш файл рабочего процесса не сработала, но все в порядке - спасибо за попытку поделиться им в любом случае, но в этом случае я могу работать без него, так как на самом деле я собираюсь сделать это с нуля:

Automator workflow

В зависимости от того, как ваш рабочий процесс будет настроен на получение входных данных, вы можете удалить действие Получить указанные элементы поиска и разрешитьнапример, рабочий процесс, выполняемый как Service , чьим вводом будет папка, содержащая изображения для обработки.Как вы сказали, это была ваша папка Downloads , содержащая изображения, я чувствовал, что вряд ли вы настроите рабочий процесс для работы в качестве действия папки .

В целях тестирования вы можете сохранить действие Получить указанные элементы поиска и заменить папку Пример , которую я там вставил, на папку Загрузки .

Вот код из действия Запуск AppleScript для копирования / вставки:

    on run {input, parameters}
        # input will be the folder containing the images, e.g. the Downloads folder
        set [here] to the input

        set suffix to "preview.jpg"
        set my text item delimiters to {pi, space & suffix}


        tell application "Finder"
            set jpgs to the name of every file in here whose name ends with the suffix

            repeat with jpg in jpgs
                set this to the text items of jpg as text
                set there to (a reference to the folder named this in here)

                if not (there exists) then set there ¬
                    to make new folder in here ¬
                    with properties {name:this}

                move the file named jpg in here to there
            end repeat
        end tell
    end run

Не имеет значения, существуют ли папки назначения: если они существуют, изображениебудет перемещен в соответствующий;для тех, кто этого не делает, папка создается до перемещения изображения.

Обновление в ответ на комментарии

① Иногда у меня есть строка между «предварительным просмотром» и расширением .jpg или .png

② Я также хотел бы переместить заполненные папки в новую папку /Users/sebba/BLENDER/BLENDS

Учитывая изменчивость ваших имен файлов, которые вы сейчас используетераскрыто, я думаю, что для обработки файлов проще использовать сценарий оболочки вместо AppleScript.

Удалите действие Запуск AppleScript и вставьте действие Выполнить сценарий оболочки со следующими параметрами: Оболочка : bin/bash, Пропуск ввода: as arguments.

Удалите любой пример кода, который появляется в поле редактирования, и введите егоcode:

    cd "$1"
    folder=()

    while read -r file
    do 
        folder+=("$(egrep -io '^.+ \d{3}' <<<"$file")")
        [[ -d "${folder[@]: -1}" ]] || mkdir "${folder[@]: -1}"
        mv -v "$file" "${folder[@]: -1}"
    done <<<"$( ls | egrep -i '^.+ \d{3} preview.*\.(jpg|png)' )"

    mv -v "${folder[@]}" "/Users/sebba/BLENDER/BLENDS"

Используется совпадение регулярного выражения для выбора имен файлов, которые:

  1. Начинаются абсолютно с чего угодно (но не с ничего);затем
  2. Далее следует пробел, точно три цифры, пробел, затем слово «предварительный просмотр»;затем
  3. Следуйте с чем угодно (включая ничто);затем
  4. Заканчивается на ".jpg" или ".png".

Следовательно, он перемещает следующие файлы в указанную папку (папка создается, если она несуществуют и файлы с одинаковыми именами перезаписываются):

  • My image_file 001 preview.foo bar.jpgMy image_file 001/
  • 004 2 001 preview.png004 2 001/

Но следующие файлы не будут затронуты :

  • 001 preview.png
  • My image_file 01 preview.jpg
...