1

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

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

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

1 ответ1

1

Вы можете использовать цикл 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .