Toolz: переименовываем файлы при пакетной обработке

03.03.2026
Toolz: переименовываем файлы при пакетной обработке

Очередь в Image Compressor уже умеет многое: добавлять изображения «на лету», удалять лишние, пересобирать ZIP без полного ресета (об этом уже был отдельный пост — про редактирование очереди и обзорный материал про все модули). Теперь к этому добавился ещё один практичный слой — автоматическое переименование файлов по шаблону при конвейерной обработке.

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


Зачем вообще переименовывать файлы в батче

Когда работаешь с очередью изображений, имена файлов часто живут своей жизнью:

  • экспорт из редактора даёт длинные названия вроде Untitled_Project_23_final_final_v3.png;
  • одна и та же сцена рендерится в разных размерах, а имена не отражают ни размер, ни порядок;
  • нужно подготовить ассеты под конкретный блок интерфейса: hero-01.webp, hero-02.webp, hero-03.webp и т.д.

Ручное переименование после скачивания ZIP — это:

  • повторяющиеся действия в файловом менеджере;
  • риск ошибиться в нумерации или пропустить файл;
  • потеря связи между «оригинальным именем» и тем, что в итоге попало в проект.

Новый конструктор шаблонов имён решает это на этапе экспорта:

  • вы один раз задаёте шаблон имени;
  • видите предпросмотр для первых файлов очереди;
  • при скачивании ZIP файлы уже лежат с нужными именами.

Как это работает в интерфейсе

Функция переименования живёт в модуле Image Compressor, в режиме очереди (когда загружено несколько изображений).

Включение и выключение

  • В панели Image settings теперь есть отдельный блок «Переименовать файлы по шаблону».
  • В блоке — тумблер: пока он выключен, поведение остаётся прежним, ZIP сохраняет оригинальные имена.
  • При включении появляется поле ввода шаблона и предпросмотр имён.

Важно: переименование работает только в мульти‑режиме (когда в очереди несколько файлов). Для одиночной картинки эта опция не показывается — там достаточно ручного имени.

Шаблон и подсказки

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

Copy
image-{index}.{ext}

Ниже — блок подсказок с токенами:

Токен Описание Пример
{name} Исходное имя файла без расширения hero_big
{ext} Расширение файла (без точки) png, webp, avif
{index} Порядковый номер в очереди, начиная с 1 1, 2, 3
{index:02} Порядковый номер с ведущими нулями 01, 02, 03
{date} Текущая дата в формате YYYY-MM-DD 2026-03-03
{date:YYYYMMDD} Текущая дата в заданном формате 20260303

Шаблон можно комбинировать как угодно:

  • blog-{date:YYYYMMDD}-{index:02}.{ext}
  • thumb-{index}.{ext}
  • product-{name}-{index:03}.{ext}

Предпросмотр имён

Чтобы не гадать, что получится на выходе, под шаблоном есть небольшой список:

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

Так можно спокойно поиграться с шаблоном и добить его до идеального вида, не пересобирая ZIP каждый раз.


Как формируются имена при экспорте

Когда вы нажимаете «Скачать изображения»:

  1. Для каждого элемента очереди берётся:
    • оригинальное имя файла (например, Screenshot 2026-03-03 at 11.15.18.png);
    • кодек и MIME‑тип (чтобы понять расширение, если нужно).
  2. Если тумблер переименования выключен — файл попадает в архив с оригинальным именем (с учётом логики избежания дублей в ZIP).
  3. Если тумблер включен и задан шаблон:
    • конструктор вычисляет:
      • {name} — исходное имя без расширения;
      • {ext} — расширение по MIME или по имени;
      • {index} / {index:02} — порядковый номер;
      • {date} — дату на момент экспорта;
    • собирает строку по шаблону;
    • эта строка используется как имя файла в ZIP.

При наличии дублей (одинаковых итоговых имён) ZIP‑сборщик, как и раньше, аккуратно добавляет суффиксы (_2, _3 и т.д.), так что конфликтов не возникает.


Примеры шаблонов под реальные задачи

1. Серия превью для блога

Задача: подготовить изображения для статьи, имена вида post-01.webp, post-02.webp

Шаблон:

Copy
post-{index:02}.{ext}

Итог:

  • post-01.webp
  • post-02.webp
  • post-03.webp

2. Экспорт ассетов под конкретный блок интерфейса

Задача: блок hero с несколькими состояниями — hero-1, hero-2, hero-3.

Шаблон:

Copy
hero-{index}.{ext}

Итог:

  • hero-1.avif
  • hero-2.avif
  • hero-3.avif

3. Привязка к исходным названиям

Задача: сохранить связь с оригинальным именем, но добавить нумерацию и привести формат к единому виду.

Шаблон:

Copy
{name}-{index:02}.{ext}

Итог:

  • Homepage Banner-01.webp
  • Homepage Banner-02.webp
  • Homepage Banner-03.webp

Удобно, когда дизайнеры уже дали говорящие имена, и вы не хотите их полностью терять.

4. Архив «по дате»

Задача: выгрузить ZIP со всеми файлами, пометив дату экспорта.

Шаблон:

Copy
{date:YYYYMMDD}-{index:02}.{ext}

Итог (для 3 марта 2026 года):

  • 20260303-01.webp
  • 20260303-02.webp
  • 20260303-03.webp

Итог: очередь, профили и имена — вместе

Новый конструктор переименования хорошо ложится на уже существующую архитектуру:

  • Редактируемая очередь в Image Compressor позволяет гибко собирать батч (добавить, удалить, пережать ещё раз) — об этом подробно в отдельном посте.
  • Профили настроек (кодеки, ресайз, палитра) обеспечивают повторяемость качества для разных проектов — обзор есть в статье «Toolz — в помощь вебмастеру».
  • Шаблоны имён теперь закрывают последний «ручной» шаг — переименование файлов после скачивания.

Вместе это даёт конвейер: загрузили → настроили → сжали → скачали ZIP → разложили по проекту, без лишних телодвижений в файловом менеджере и без путаницы в названиях.

Читать далее

07.03.2026

rest-pipeline-js — пайплайны запросов к API

Библиотека rest-pipeline-js помогает описывать цепочки REST-запросов с паузами, retry, кэшем и лимитами — в посте разбираем сценарии от простой пошаговой загрузки до автоматического подбора авиарейса и готового предложения для шаблона, плюс плагины для Vue 3 и React с примерами кода.

Метки
rest-pipeline-jsREST APIpipelineVue 3React
07.03.2026

responsive-media — реактивные брейкпоинты для Vue и не только

Один раз описать брейкпоинты — и во всём приложении использовать реактивные флаги «мобилка / планшет / десктоп» без ручных подписок на matchMedia. Как устроен пакет responsive-media, кастомные брейкпоинты с ориентацией и aspect-ratio и плагин для Vue 3 — в одном посте.

Метки
responsive-mediaVue 3media queriesадаптивная вёрстка