Как пакетно переименовать эпизоды

Как пакетно переименовать эпизоды

У меня есть тысячи эпизодов, которые я хочу переименовать, и все они имеют схожий формат.

Если бы мне пришлось делать это вручную, это заняло бы очень много времени.

Поэтому мне понадобится простой способ пакетного переименования следующих примеров:

[Источник]НазваниеСерии_-_001_НазваниеЭпизода_[480p][DVD][Загрузчик]

[Источник]НазваниеСерии_-_010_НазваниеЭпизода_[720p][BD][Загрузчик]

[Источник]НазваниеСерии_-_100_НазваниеЭпизода_[1080p][BD][Загрузчик]

чтобы просто:

Название серии Эпизод 1 - Название серии

Название серии Эпизод 10 - Название серии

Название серии Эпизод 100 - Название серии

Как мне этого добиться?

решение1

Я бы сохранил постоянную длину номера эпизода в целях сортировки.

А как насчет расширений (мой однострочный текст их сохраняет)?

В командной строке:

for %F in ([*) do @for /f "tokens=2-4 delims=-_[]" %A in ("%F") do @echo Ren "%~fF" "%A Episode %B - %C%~xF"

Пример вывода:

Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_001_EpisodeName_[480p][DVD][Uploader]" "SeriesName Episode 001 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_100_EpisodeName_[1080p][BD][Uploader]" "SeriesName Episode 100 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_010_EpisodeName_[720p][BD][Uploader]" "SeriesName Episode 010 - EpisodeName"

В пакетном файле удвойте все знаки процента.

Первый for перебирает все элементы, начинающиеся с a. [
Второй for разбивает имя по всем указанным разделителям (соседние считаются за один), беря только второй и четвертый. Команда ren отображается только в целях безопасности. Удалите эхо, если вывод в порядке.

РЕДАКТИРОВАТЬ:Эта версия пакетного файла удаляет начальные нули:

:: SU1310869.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
:: cd /d "X:\folder\episodefiles
for %%F in ([*) do @for /f "tokens=2-4 delims=-_[]" %%A in ("%%F") do (
  set /a Num=1%%B - 1000
  @echo Ren "%%~fF" "%%A Episode !Num! - %%C%%~xF"
)

Связанный контент