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

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

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

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

Сообщение Flasher »

RuMaS, не надо оверквотить.

В корне есть залоченные папки типа System Volume Information, Recycler, Recovery?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
HEXFIX
Сообщения: 177
Зарегистрирован: Пт июн 25, 2010 19:54
Откуда: Калининград

Сообщение HEXFIX »

Всем привет.

Подскажите, как решить такую проблему. Есть много папок с музыкой вида:
  • 01-xxx (1991)
    02-yyy (1992)
    ...
    mn-zzz (2013)
Длина названий папок везде разная. Нужно привести к виду:
  • (1991) xxx
    (1992) yyy
    ...
    (2013) zzz
Последний раз редактировалось HEXFIX Чт сен 12, 2013 16:01, всего редактировалось 1 раз.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

HEXFIX
ИГП с регулярными выражениями.
Найти: \d+-([^\(]*) +(\([^\)]*\))(.*)
Заменить на: $2 $1$3
Нет, я не сплю. Я просто медленно моргаю.
HEXFIX
Сообщения: 177
Зарегистрирован: Пт июн 25, 2010 19:54
Откуда: Калининград

Сообщение HEXFIX »

Batya
Спасибо.
В большинстве случаев работает, кроме тех названий папок, которых есть точка или тоже присутствуют скобки. Например 01-Weiss.Mix (2002), 03-Less But More (New School Remix) (2012)
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

а так?
Найти: \d+-(.*) +(\(\d{4}\))(.*)
Заменить на: $2 $1$3
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

HEXFIX писал(а):кроме тех названий папок, которых есть точка
Если в ИГП в маске для расширения пусто, то можно попробовать в маске для имени вместо [N] поставить [A].
Если в ИГП в маске для расширения указано [E], то выставить галку “Заменять также в расширениях файлов” (значок [E] левее Рег. выраж).

И ещё до кучи один вариант.
Найти: \d+-(.+) (.+)
Заменить на: $2 $1
HEXFIX
Сообщения: 177
Зарегистрирован: Пт июн 25, 2010 19:54
Откуда: Калининград

Сообщение HEXFIX »

Всем спасибо за помощь.
Сработал вариант sa:
Если в ИГП в маске для расширения указано [E], то выставить галку “Заменять также в расширениях файлов” (значок [E] левее Рег. выраж)
krokradio
Сообщения: 2
Зарегистрирован: Ср окт 02, 2013 15:57

Сообщение krokradio »

Всем добрый день.

Имеется огромная коллекция аудиофайлов. Порядка 1,5 террабайта. Отсортирована по стилям. Все папки и подпапки приведены в одинаковый вид типа стиль/направление/исполнитель/год - название альбома. Теперь дело стало за "малым". Привести все имена файлов к одному виду типа номер трека(двузначный) - название композиции.

И тут возникает проблемка. Видов именовки файлов больше десятка:
01 иф
01. иф
01.иф
01 - иф
01-иф
1.иф
1 иф
(01) иф
исполнитель - 01 - иф
и т.д.

Как прописать строки поиска и замены, я даже представить себе не могу. Скорее всего нужно будет сидеть месяц и вручную каждую папку обрабатывать. Или может быть есть идеи.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

krokradio
Можно брать mp3-теги в качестве данных полей контентных плагинов, поддерживаемых ID2/3 (таких немало), и ими переименовывать.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
krokradio
Сообщения: 2
Зарегистрирован: Ср окт 02, 2013 15:57

Сообщение krokradio »

Flasher писал(а):krokradio
Можно брать mp3-теги в качестве данных полей контентных плагинов, поддерживаемых ID2/3 (таких немало), и ими переименовывать.
Тааак. Спасибо за пинок в нужном направлении :D . Пошел учить матчасть. :roll:

Добавлено спустя 51 минуту:

Flasher

Были б вы рядом, я б вас за этот пинок всего облобызал бы. :D
TagScanner нашел. Теперь сижу кайфую.
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

krokradio писал(а):И тут возникает проблемка. Видов именовки файлов больше десятка
Нажать Ctrl+B, чтобы показать все файлы. 10 раз вызвать диалог замены с RegExp.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
pirat_sk
Сообщения: 2
Зарегистрирован: Пн май 05, 2014 15:58

Сообщение pirat_sk »

Как с помошью ИГП и регулярных выражений поменять местами слова в имени файла

Было до:
Баратов А.Н. Пожарная опасность стройматериалов. (1988)
Сендеров Б.В. Аварии жилых зданий. (1991)

Должно быть после:

Пожарная опасность стройматериалов. Баратов А.Н. (1988)
Аварии жилых зданий. Сендеров Б.В. (1991)
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

pirat_sk
Найти: (.*?) ([^.]+)\. (\(\d+\))
Заменить на: $2. $1 $3
Почему же, ё-моё, ты нигде не пишешь "ё"?
pirat_sk
Сообщения: 2
Зарегистрирован: Пн май 05, 2014 15:58

Сообщение pirat_sk »

CaptainFlint писал(а):pirat_sk
Найти: (.*?) ([^.]+)\. (\(\d+\))
Заменить на: $2. $1 $3

Спасибо. Помогло. Скажите, а где кроме справки можно почитать подробней про ИГП с использованием регулярных выражений?

Из данного поста я понял, как вы, например, нашли цифры в скобках (\(\d+\)), но непонятно, как вы смогли отделить фамилию с инициалами от названия?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

pirat_sk
Весь мой пример основан исключительно на информации, имеющейся в справке. В данном случае для разделения я использовал тот факт, что в названии отсутствуют точки (кроме завершающей). Поэтому сначала захватывается последовательность произвольных символов настолько меньшей длины, насколько возможно (подвыражение «.*?»), но так, чтобы за ней следовали: пробел « », последовательность неточечных символов «[^.]+», точка, пробел, число в скобках. В данной ситуации построить соответствие файловых имён по подобным выражениям можно единственным способом, что и позволило дальше скомпоновать отобранные подвыражения в нужном порядке.

Можно было и без использования "нежадного" поиска. Например, так:
(.*\.) ([^.]+)\. (\(\d+\))
Здесь, соответственно, первым выражением ищется произвольная последовательность символов максимальной длины, оканчивающаяся на точку, а дальше всё то же самое. Итоговый результат тот же, отличия только во внутренних механизмах поиска соответствий в движке регулярных выражений.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Ответить