Загрузка данных


@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: Ввод размера группы
set "max_sub=0"
set /p "max_sub=Введите количество фото в одной группе (например, 3): "

:: Защита от пустого ввода или нуля
if !max_sub! LEQ 0 (
    echo [Отмена] Введено некорректное число.
    pause
    exit /b
)

echo.

:: Инициализация счетчиков (группа 1, подномер 1)
set "grp=1"
set "sub=1"
set "count=0"

:: Чтение списка файлов через dir /b /a-d гарантирует, что уже переименованные файлы не попадут в цикл повторно
for /f "delims=" %%F in ('dir /b /a-d *.jpg *.jpeg *.png *.bmp *.webp 2^>nul') do (
    set "ext=%%~xF"
    
    :: Форматирование номера группы (001, 002...)
    set "g_pad=00!grp!"
    set "g_pad=!g_pad:~-3!"
    
    :: Форматирование номера внутри группы (01, 02...)
    set "s_pad=0!sub!"
    set "s_pad=!s_pad:~-2!"
    
    set "new_name=!g_pad!-!s_pad!!ext!"
    
    :: Переименование файла (если имя уже совпадает или занято — пропускаем с предупреждением)
    if /i not "%%F"=="!new_name!" (
        if exist "!new_name!" (
            echo [Ошибка] Файл "!new_name!" уже существует. Пропуск "%%F".
        ) else (
            ren "%%F" "!new_name!"
            echo "%%F" ---^> "!new_name!"
            set /a count+=1
        )
    )
    
    :: Шаг счетчика: увеличиваем подномер, а при превышении лимита — переходим к следующей группе
    set /a sub+=1
    if !sub! GTR !max_sub! (
        set "sub=1"
        set /a grp+=1
    )
)

echo.
if !count! EQU 0 (
    echo [Инфо] Подходящих файлов для переименования не найдено.
) else (
    echo [Готово] Успешно переименовано файлов: !count!.
)
pause