Удаление текста с середины имени файла с помощью пакетного переименования
Я пытаюсь деорганизовать серию видеофайлов, названных так:
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"