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