Групповое переименование

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Добавлю свою мысль: лучше бы начать с обычных выражений (жмём F1 в диалоге "Групповое переименование"), которые к данному случаю тоже вполне подходят.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

gatalsky2010 писал(а):где можно почитать подробнее
В справке, на форуме и в других интернетах
gatalsky2010
Сообщения: 40
Зарегистрирован: Вс дек 12, 2010 22:20

Сообщение gatalsky2010 »

Про оверквотинг подумал но решил что места это не так критично. На дальнейшее буду иметь ввиду. Кто скажет как можно эти две комманды повесить на две раные кнопки (как создавать кнопку MULTIRENAME на панели инструментов уже разобрался, но как туда параметры нужные задать :dunno:)?[/quote]
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

gatalsky2010
Каждый шаблон, выставив все параметры переименования, сохранить отдельно (через выпадающий список в правой части окна группового переименования). Дальше в качестве команды для каждой кнопки указать MULTIRENAME имя_шаблона.
Даже самая богатая фантазия
Не представит себе наши безобразия.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

есть список видео файлов
вот фрагмент

Duck_TalesDVDRip_1990_DUB-s01e016.avikciorlashj.avi
DuckTales-DVDRip_1990_DUB-s01e015.avixcgwf.avi
DuckTales-DVDRip_1990_DUB-s01e018.aviksdjfwjfklj.avi
DuckTales-DVDRip_1990_DUB-s01e019.avi
DVDRip_-s01e017.avixljwpoj.avi


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

Я написал так
Найти: e0([0-9]+).{0,}(\.[a-zA-Z]{3,}$)
Заменить на: $1$2
  • Правильно ли я написал регулярное выражение?
  • Может быть можно его упростить или более изящно написать?
  • Можно ли как-то без использования регулярок сохранить в таких случаях тип файла, чтобы он не затирался, потомучто в каталоге файлы с разными типа, и если туп в поле ...РАСШИРЕНИЯ написать AVI, то затрутся реальные типы у некоторых файлов?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

svshilo писал(а):Правильно ли я написал регулярное выражение?
ИМХО, нет. Но вообще-то автору должно быть виднее — достигается поставленная задача с любым произвольным файлом или нет. Столбец "Новое имя" в ИГП для того и существует.
А я не понял самое главное: что же необходимо получить в результате. Там получаются уж явно не "только номера серий без ведущего нуля". Пару примеров ожидаемого результата для уже приведённых исходных имён попрошу.
svshilo писал(а):Может быть можно его упростить или более изящно написать?
Во-первых, напрашивается встречный вопрос: вам шашечки или ехать?
Во-вторых, невозможно полностью оценить правильность регулярки и — тем более — говорить про упрощение/изящество, не понимая ожидаемого результата (см. выше).

О третьем вопросе — после прояснения первых двух.
Даже самая богатая фантазия
Не представит себе наши безобразия.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Avada писал(а):
Регулярка в этом конкретном случае работает, пока результат выдаёт правильно, просто я новичок, хотел узнать правильно ли написал.

и т.д., т.е. остаются только номера серий и всё, ну или можно одинаковое начало имени сделать, чтобы не в разнобой были серии. А то открываешь каталог, а там, например, после 16 25 серия, а потом 11.

я так понимаю, что когда поиск/замену используешь, то поле "...расширения" не работает и расширения можно сохранить только используя регулярное выражение типа (\.[a-zA-Z]{3,}$), хотя может я неправильно написал, но в это конкретном случае оно верно подставляет тип файла.
s58.radikal точка ru/i160/1107/61/6878f923b2ca.png
Может вот так надо e0([0-9]{2}).{0,}(\.[a-zA-Z]{3,}$)
регулярка находит фрагмент в имени файла e0 (т.к. он присутствует во всех файлах) потом запоминает две цифры в переменную №1, потом идёт любое количество любых символов и запоминается расширение файла из трёх и более символов в переменную №2, потому как попадаются расширения типа mpeg, divx

после переименования с таким выражением на выходе получаются файлы:
Duck_TalesDVDRip_1990_DUB-s01e016.avikciorlashj.avi => 16.avi
DuckTales-DVDRip_1990_DUB-s01e015.avixcgwf.avi => 15.avi
DVDRip_-s01e017.avixljwpoj.avi.mpeg => 17.mpeg


P.S. можете посоветовать какую-нибудь стояющую книженцию по регуляркам или ресурс в Интернете?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

svshilo
То, что включена опция "Подстановка", видно исключительно на картинке. В постах про это — ни единого слова. Да, если она включена, всё вроде как работает указанным образом, но годится это только для буквенных расширений и двух результирующих цифр.
А если в расширении не сплошные буквы, а хоть одна цифра, что тогда? Ответ предлагаю поискать самостоятельно.
И можно узнать, зачем в конце поисковой строки понадобился символ доллара?
А по регуляркам конкретно для TC (специфику учитывать необходимо!), ИМХО, достаточно раздела в справке. Ссылка на источник там внутри есть. В своей книге по TC мы этот материал излагали, надеемся, несколько попродробнее и попонятнее, можно и туда заглянуть, если попадётся.
Даже самая богатая фантазия
Не представит себе наши безобразия.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Avada
А если в расширении не сплошные буквы, а хоть одна цифра, что тогда?
На ум с цифрами в типе видео файлов приходит только "mp4". У меня нет файлов такого типа в каталогах, требующих переименования файлов. В основном AVI, mpg, mpeg, divx.

Хотя думаю, что для переименования имён файлов с цифрами в расширении будет достаточно в группу символов добавить диапазон цифр от 0-9 и всё.
Например: (\.[a-zA-Z0-9]{3,}$)
И можно узнать, зачем в конце поисковой строки понадобился символ доллара?
$ - это символ конца строки. Как в моей ситуации обойтись без него я не знаю.
у меня попадаются файлы с именами, части которых разделены не пробелом или нижним подчёркиванием или подобными символами, а разделены точкой, т.е.: priklyoucheniya.avianosca.mpg
Если убрать символ конца строки, то регулярка, ясно дело, найдёт первое вхождение искомого выражения и это будет ".avi", а ни как не ".mpg".
Получается что выражение (\.[a-zA-Z0-9]{3,}$) ищет именно последнюю с конца группу символов после точки, включая саму точку, тогда точно будет найдено именно расширение файла, а не часть имени.
Хотя я выражения только начинаю изучать, поэтому могу понимать не правильно. Но на моих списках файлов это выражение работает.

Спасибо за ссылки!
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

svshilo писал(а):На ум с цифрами в типе видео файлов приходит только "mp4".
032, 263, 264, 3gz, 3gp, 3gp2, 3gpp, 3gpp2, 3mm, 3p2, 44, 4xm, 603, 60d, 800, am2, am4, am5, am6, am7, c2r, d2v, d3v, dc8, demo4, es3, ev2, f4v, g64, h-263, h263, h263+, h264, h3r, h4v, k3g, l32, m15, m1pg, m1s, m1v, m21, m2p, m2s, m2t, m2ts, m2v, m3a, m4e, m4f, m4u, m4v, m65, mj2, mjp2, mk3d, mkv3d, mp0, mp21, mp2v, mp4, mp4v, mpeg1, mpeg2, mpeg4, mpg2, mpg4, mpv2, mt2s, mv4, mv85, mv93, mv95, p64, sdr2, st4, tdt2, ts4, vc1, vp3, vp6, vp7, w32, w3d, wm3, wp3.
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Flasher"
у меня таких форматов нет.
(\.[a-zA-Z0-9]{3,}$) должно сработать на все эти типы. По крайней мере шесть разных типов попробовал - срабатывает на ура.

[mod="Avada"]Пост отредактирован. ненужное цитирование убрано.[/mod]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Я про ум и цифры, а не то, что есть или нет.
Изучаем правила.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

svshilo писал(а):(\.[a-zA-Z0-9]{3,}$) должно сработать на все эти типы.
Расширение может быть менее 3 символов. Наверное, более правильно

Код: Выделить всё

(\.[^\.]+)$
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Моя вариация:
s\d+e0*(\d+).*\.(.*?)$
$1.$2
[v] RegEx [v] Subst
svshilo
Сообщения: 12
Зарегистрирован: Пт окт 01, 2010 02:54

Сообщение svshilo »

Batya писал(а):

Код: Выделить всё

(\.[^\.]+)$
Спасибо, вот то что нужно, коротко, изящно и функционально.
Сохраню этот кусочек на будущее для расширений.
Ответить