Переименование нескольких изображений в папке с помощью командного файла

У меня есть папка, полная изображений, которые имеют формат filename.com_XXX_IMG_000.jpg. Проблема возникает из-за того, что имя файла содержит.com, оно сбивает с толку программное обеспечение, которое я использую для загрузки его в веб-пространство.

Мне нужно создать командный файл, который получает все изображения в папке и переименовывает их все с именем filename.com_XXX_IMG_000.jpg => filename_XXX_IMG_000.jpg.

Любая помощь будет благодарна, спасибо заранее.

2 ответа

Решение

Так как вы хотите сделать это в пакетном файле:

@echo off

for /f "delims=. tokens=1,2,3" %%f in ('dir /b *.jpg') do (
  setlocal enabledelayedexpansion

  set part=%%g

  if "!part:~0,3!"=="com" (
    set oldname=%%f.%%g.%%h
    set newname=%%f.!part:~4!.%%h
    echo "!oldname!" -^> "!newname!"
    ren "!oldname!" "!newname!"
  )

  endlocal
)

Несколько заметок

  • for переменные цикла состоят из одной буквы, например: %f
  • в командном файле % нужно сбежать, так %f становится %%f
  • delims=. разбивает имена файлов на .в вашем случае на три части
  • tokens=1,2,3 возвращает три переменные, содержащие отдельные части имени (%f, %g а также %h)
  • enabledelayedexpansion включает обработку динамических переменных
  • Вы можете выполнять строковые операции с переменными: %foo:~0,3% возвращает первые три символа %foo%,
  • с отложенным расширением, вы можете получить доступ к переменным, которые меняют свои значения, используя ! вместо %
  • > должен быть сбежал или echo не будет печатать, следовательно ^>
  • прочитайте больше на Манипуляции Строки в DOS

Читать HELP FOR и попробуйте следующее....

@echo off
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
  set fn=%%~na
  set fn=!fn:.com=!
  echo REN "%%a" "!fn!.jpg"
)

вам нужно включить отложенное расширение, потому что вам нужно развернуть переменную внутри цикла for.

цикл перебирает все файлы jpg в текущем каталоге и для каждого файла извлекает свое имя файла, используя ~n синтаксис, а затем он удаляет все случаи .com заменив их пустой строкой. Читать HELP SET

после тщательного тестирования удалите echo команда

Другие вопросы по тегам