XRENN - утилита командной строки для переименования/перенумерации файлов с использованием регулярных выражений.

Расшифровка названия:
X - eXtended
REN - REName
N - reNum

Основные фичи:

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

- Программа изменяет только имена файлов, расширения не затрагиваются. Для папок считается, что у них расширений нет. Имена вида ".qwerty", т.е. начинающиеся с едиственной точки, считаются состоящими из одного имени без расширения. Скрытые и системные файлы по умолчанию пропускаются. Если обработка описаний не отключена, файл descript.ion тоже пропускается. Для включения расширений в обработку можно использовать ключ /EXT.

- Параметры задаются в стиле WSH, т.е. могут быть именованные и неименованные. Именованные имеют вид /ключ или /ключ:значение, в дальнейшем просто ключ. Все остальные - неименованные, в дальнейшем просто параметры. Это сделано для совместимости со скриптом vrenn.vbs. В отличие от WSH, вместо двоеточия можно использовать символ равенства, а для ключей /N, /A, /I (использующих числовое значение) разделитель можно опускать, например: /N100 /A3 /I1. Параметры регистронезависимы.

- Для контроля процесса, на экран выводятся имена обрабатываемых файлов, в конце выводится статистика.

- При переименовании и перенумерации создаются файлы отката, позволяющие вернуть предыдущие имена файлов. Файлы отката создаются по умолчанию во временной папке и имеют имена вида YYYY-MM-DD--hh-mm-ss--nnnnnnnnnnnnnnnnnnnn.xrenn - дата и время начала операции и счётчик для гарантии уникальности файла. При использовании ключа /UCD файлы отката будут создаваться в текущей папке и им будет установлен атрибут "скрытый". Файлы отката создаются в кодировке UTF-8 без BOM. Для отката может использоваться XRENN с ключом /U (см. далее). Кроме того, сами файлы отката имеют структуру командного файла, поэтому для отката можно изменить расширение на cmd или bat и запустить, однако, в этом случае не будут восстановлены описания файлов. Как вариант, в переименованном файле отката можно раскоментировать строку с :@XRENN.EXE (убрав двоеточие) и запустить этот файл. После отката через XRENN, файл отката будет переименован, к расширению будет добавлено -bak. Это необходимо для корректной работы нескольких последовательных откатов командами /U.

- Для дополнительной фильтрации возможно задавать маски файлов в "классическом" виде с использованием * и ?. Маска может состоять из нескольких подмасок, перечисленных через точку с запятой, например "*.jpg;*.jpeg;*.png;*.gif". Маска как правило задаётся первым параметром и имеет меньший приоритет, по сравнению с другими параметрами, например, единственный параметр для /D будет рассматриваться как шаблон, а два параметра как маска и шаблон. Альтернативным способом является задание маски в виде ключа /mask. Такая маска должна иметь хотя бы один символ * или ?, чтобы её можно было отличить от остальных ключей. Если задано несколько масок параметрами и ключами, все они будут обработаны, например в "XRENN *.jpg;*.jpeg /*.bmp /*.gif;*.png . /D" будет использоваться маска "*.bmp;*.gif;*.png;*.jpg;*.jpeg". Если маска не задана, по умолчанию используется "*.*". Если задан список, все маски игнорируется.

- Обрабатываемые файлы могут быть заданы списком через файл, указаный в ключе /L. Структура списка - одна строка - одно имя файла. Список файлов должен быть в локальной кодировке для неюникодных программ (для русской локали CP-1251) или unicode (UCS2, UTF-8) с BOM. Маски и пути в списке не допускаются.

- Если задан список, файлы обрабатываются в порядке по списку. Иначе, файлы обрабатываются в алфавитном порядке.

- При переименовании от имени отбрасываются начальные и конечные пробелы и конечные точки.

- Программа обрабатывает описания файлов, находящиеся в файле descript.ion и модифицирует его при необходимости. Файл описаний должен быть в кодировке, которая установлена для неюникодных приложений или unicode (UCS2, UTF-8) с BOM.

- Файлы обрабатываются только в текущей папке, обхода дерева папок нет.

- Обратные ссылки в строке замены могут быть от \0 до \9.

Исходники
https://disk.yandex.ru/d/96LZrNNyKiyxYw

Скомпилированный файл x32
https://disk.yandex.ru/d/rbhoa3z6DxU3RQ

П.С.
Утилита прошла долгий путь написания от скриптовых языков (первая версия была на perl) до адаптации к vbscript (четвёртая версия) и последующей переделки под PureBasic (пятая версия).
Многие вещи сделаны не оптимально и совсем не так, как я сделал бы сейчас.
В общем, утилите требуется серьёзный рефакторинг, чем я понемногу и занимаюсь.