Удаление текста с середины имени файла с помощью пакетного переименования

Я пытаюсь деорганизовать серию видеофайлов, названных так:

Something or Other.s1e1.mp4
Another title.s1e2.mp4
...
Yet More Titles.s1e87.mp4

И так далее. То, что я хочу сделать, это удалить часть имени файла "s1eNUM" и вернуть его к нормальному состоянию, чтобы я получил "Something or Other.mp4" и "Yet More Titles.mp4" и тому подобное.

Можно ли это сделать с помощью командной строки Windows, с помощью Ren и командных файлов? Или мне нужно специальное программное обеспечение? Спасибо!!

2 ответа

Решение

Используйте команду для.

@echo off
set YourFileName=title.s1e2.mp4
for /f "tokens=1 delims=." %%x in ("%YourFileName%") do (set filename1=%%x)
for /f "tokens=3 delims=." %%x in ("%YourFileName%") do (set filename2=%%x)
echo %filename1%.%filename2%

rename C:\PATH\%YourFileName% %filename1%.%filename2%

pause>nul

Это должно удалить "s1eNum" в середине, а затем объединить имя файла и расширение в конце.

Я придумаю терминологию и скажу, что узлом является любой текст до, после или между точками. Таким образом, "Other.s1e1.mp4" будет иметь 3 узла, последний из которых будет расширением файла.

Если вы знаете, что ни один из ваших файлов.mp4 не содержит более 3 узлов, все, что вам нужно, - это простая команда REN.

Посмотрите, как команда Windows RENAME интерпретирует подстановочные знаки для объяснения, почему это работает. Обратите внимание, что у вас должно быть достаточно ? символы, соответствующие или превышающие длину самого большого найденного узла 1.

ren *.*.mp4 ?????????????????????????????????????????.mp4

Если у вас могут быть файлы с более чем 3 узлами, и вы хотите удалить предпоследний (рядом с последним) узел, то можно использовать 2 вложенных цикла:

for /f "eol=: delims=" %%A in ('dir /b /a-d *.*.mp4') do for %%B in ("%%~nA") do ren "%%B" "%%~nA.mp4"
Другие вопросы по тегам