Переименование нескольких изображений в папке с помощью командного файла
У меня есть папка, полная изображений, которые имеют формат 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
команда