Пакетное добавление в конец имени файла перед расширением с помощью команды ren

651
Natalie

Я хотел бы переименовать все файлы в папке, которые имеют разные расширения, чтобы их имя заканчивалось на " _1" при сохранении существующих расширений.

Я попытался ren * *_1*, который просто заменил последний экземпляр уже существующего подчеркивания на то же самое _1. Я также пытался ren * *_1.*, но это добавило _1в конец имен файлов.

Я использую командную строку (ввод cmd из панели поиска папок) в Windows 10.

1

1 ответ на вопрос

1
Pimp Juice IT

Вы можете использовать цикл for для итерации каждого файла в каталоге и указывать подстановки переменных по отдельности, чтобы получить имя файла минус расширение и расширение файла плюс предшествующую точку. Вы можете использовать их и добавить в _1строку, чтобы получить ожидаемый результат для каждого итерированного файла.

По сути это., ,

  • Перебирает все *.*файлы в определенном каталоге (не рекурсивно)
  • Использует переменные замены для получения имени файла без расширения и расширения файла отдельно / индивидуально
  • Объединяет имя файла без расширения на в _1строке с оригиналом «» расширение и передает это на файл в качестве второго аргумента в команду ren .

Командная строка

for %a in ("C:\path\*.*") do ren "%~a" "%~Na_1%~Xa" 

Пакетный скрипт

SET "Src=C:\path" SET "Str=_1" for %%a in ("%Src%\*.*") do ren "%%~a" "%%~Na%Str%%%~Xa" 

Дополнительные ресурсы

ЗА

  • Переменные замены (FOR /?)

    Кроме того, была улучшена замена ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:

    %~I - expands %I removing any surrounding quotes (") %~nI - expands %I to a file name only %~xI - expands %I to a file extension only 
  • Ren

  • Переменные замены