CMD/BAT — Пакетное переименование файлов(.jpg) в разных папках (BAT)?
Смотрите у меня есть папки:
asteklo1, asteklo2, asteklo3, asteklo4...
в каждой из них содержится по 2 файла (.jpg)
Мне нужен способ (тот же bat), для того чтобы пакетно переименовать все эти файлы (.jpg) -> в название папки и с нижним подчеркиванием с нумерацией файла
Пример:
папка "asteklo1", в нем должны находится "asteklo1_1" и "asteklo1_2"
и так с каждой папкой, кто-то шарит за эту тему?
я только создал пакетно все эти папки с разными названиями:
for /f %%i in (list.txt) do @md "%%~i"
ну естественно и в этом list.txt находились все названия папок строчками
Роман Мирр, мне не подпапки нужно переименовать, а файлы .jpg внутри папок
Название папки: asteklo1
А в нем 2 картинки (2 файла .jpg)
Эти картинки вот нужно назвать:
Имя папки_порядковый номер
Роман Мирр, я вот не могу понять, как работать с файлами внутри каждой папки
Комбинируя это с переименованием.
Расширение трогать не нужно, там все 100% .jpg файлы, внутри папок, мне их просто переименовать нужно
@echo off
setlocal enabledelayedexpansion
for /d %%a in (*) do (
set "count=1"
for %%b in ("%%~a\*.jpg") do (
ren "%%~b" "%%~na_!count!%%~xb"
set /a "count=!count! + 1"
)
)
Сейчас под рукой винды нет - протестировать не могу.
Никаких файлов со списком папок не требуется. Скрипт проверяет все подпапки в текущей папке и переименовывает все jpg
@echo off
setlocal enabledelayedexpansion
for /d %%a in (*) do (
set "count=1"
for /f "tokens=* delims=" %%b in ('dir /a-d /b "%%~a\*.jpg" ') do (
ren "%%~a\%%~b" "%%~na_!count!%%~xb"
set /a "count=!count! + 1"
)
)
В прежнем варианте в цикл попадали уже переименованные файлы, точнее только первый переименованный файл. Из-за этого первый переименованный файл в конце переименовывался еще раз. Возможно если файлов в папке было бы больше, то попадали бы и другие файлы.
Нет не должно.
Причина того, что файлы начинались с двойки описал в предыдущем посте.
Чтоб не было такого эффекта, нужно сначала строить список файлов для обработки, а потом обрабатывать этот список. В первом же вариант "список" менялся по ходу обработки.
Забавный эффект. Уже приходилось натыкаться на эти грабли.
Готового решения на CMD не подскажу - сам на Линуксе работаю.
Алгоритм:
Нужно пройтись по всем директориям по имени, начинающихся с "asteklo", для каждой из которых:
сохранить имя директории в переменной
обнулить счётчик порядкового номера в переменной
В цикле, проходясь по каждому файлу в директории
увеличить счётчик +1 в переменной
составить новое имя файла в переменной: имя_директории "_" счётчик_порядкового_номера ".jpg"
переименовать файл в новое имя