-1

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

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

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

[Источник] SeriesName _-_ 001_EpisodeName_ [480p] [DVD] [Загрузчик]

[Источник] SeriesName _-_ 010_EpisodeName_ [720p] [BD] [Загрузчик]

[Источник] SeriesName _-_ 100_EpisodeName_ [1080p] [BD] [Загрузчик]

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

SeriesName Эпизод 1 - EpisodeName

SeriesName Эпизод 10 - EpisodeName

SeriesName Эпизод 100 - EpisodeName

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

1 ответ1

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 разделяет имя на все указанные разделители (соседние считаются только одним), занимая только второе-четвертое. Команда 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"
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .