Переименование нескольких изображений в папке с помощью командного файла - PullRequest
0 голосов
/ 05 февраля 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

прочитайте 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

1 голос
/ 05 февраля 2012

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

@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=. разбивает имена файлов в ., в вашем случае на триparts
  • tokens=1,2,3 возвращает три переменные, содержащие отдельные части имени (%f, %g и %h)
  • enabledelayedexpansion включает обработку динамических переменных
  • вы можете выполнять строковые операции с переменными: %foo:~0,3% возвращает первые три символа %foo%.
  • с включенным отложенным расширением, вы можете получить доступ к переменным, которые изменяют свои значения, используя ! вместо %
  • > должен быть экранирован или echo не будет его печатать, поэтому ^>
  • читайте подробнее о Манипулирование строками в DOS
...