@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: Имя папки, куда будут складываться все фото
set "out_dir=_Все_Фото"
:: Создаем итоговую папку, если ее еще нет
if not exist "%out_dir%" mkdir "%out_dir%"
set "total=0"
:: Перебираем все папки в текущем каталоге
for /d %%D in (*) do (
:: Пропускаем саму итоговую папку, чтобы не копировать файлы из нее же
if /i not "%%D"=="%out_dir%" (
set "folder=%%D"
set "cnt=1"
echo Обработка папки: "!folder!"...
:: Получаем список фото с правильной числовой сортировкой (1, 2, 3... 10, 11)
for /f "delims=" %%F in ('powershell -NoProfile -Command "Get-ChildItem -LiteralPath '!folder!' -File | Where-Object { $_.Extension -match '^\.(jpg|jpeg|png|bmp|webp)$' } | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(10, '0') }) } | Select-Object -ExpandProperty Name"') do (
set "ext=%%~xF"
:: Форматируем номер в двузначный вид (01, 02... 10, 11...)
set "num=0!cnt!"
set "num=!num:~-2!"
set "new_name=!folder!!num!!ext!"
:: Копируем файл в общую папку с новым именем
copy /y "!folder!\%%F" "%out_dir%\!new_name!" >nul
echo "%%F" ---^> "!new_name!"
set /a cnt+=1
set /a total+=1
)
)
)
echo.
echo [Готово] Всего скопировано и переименовано файлов: !total!
echo Все фотографии сохранены в папку: "%out_dir%"
pause