Это может показаться дубликатом вопроса, но это не так. Моя проблема немного другая. На самом деле, у меня была папка с большим количеством файлов 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
Не забудьте удвоить проценты, если вы помещаете команду в пакетный скрипт.