удаление суффиксов из нескольких файлов в windows - не дублируются

удаление суффиксов из нескольких файлов в windows - не дублируются

Это может показаться дубликатом вопроса, но это не так. Моя проблема немного другая. На самом деле, у меня была папка с большим количеством файлов mp4, и я хотел добавить к каждому имени файла суффикс GOOD. Увидев ответы на предыдущий вопрос, я что-то сделал и в итоге добавил суффикс .mp4good. Таким образом, файл изначально a.mp4 стал a.mp4good.mp4 вместо aGOOD.mp4 (что я на самом деле хотел). К счастью, все эти файлы запущены, но имена не такие, как я хотел. Я прошу помощи, как получить то, что я хочу с этого момента. Я использовал команду rename в DOS из папки, содержащей эти файлы.

решение1

Как вы обнаружили, синтаксис, который вы использовали для добавления суффикса к базовому имени, был неверным. Объяснение того, почему это так, можно найти на Как команда Windows RENAME интерпретирует подстановочные знаки?. Эта ссылка также имеет правильный синтаксис для добавления к базовому имени:

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

Их должно быть достаточно ?, чтобы соответствовать длине самого длинного базового имени.

Обратите внимание, что если у вас есть начальные имена в форме a.b.mp4, то вышеприведенное даст aGOOD.b.mp4. Если вы хотите a.bGOOD.mp4, то вам нужно больше, чем простая команда REN. Вы можете использовать

for %F in (*.mp4) do @ren "%F" "%~nFGOOD.mp4"

Если вы помещаете команду в пакетный скрипт, то вам необходимо удвоить проценты.

@echo off
for %%F in (*.mp4) do ren "%%F" "%%~nFGOOD.mp4"

В настоящее время у вас есть имена в форме a.mp4GOOD.mp4, и вы хотите aGOOD.mp4.

Решение следующее:

ren *.mp4GOOD.mp4 ??????????????????GOOD.mp4

Если в некоторых именах больше двух точек, то вам снова понадобится нечто большее, чем простая команда REN.

for %A in (*.mp4GOOD.mp4) do @for %B in ("%~nA") do @ren "%B" "%~nBGOOD.mp4

Не забудьте удвоить проценты, если вы помещаете команду в пакетный скрипт.

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