Справочники, инструменты, документация

BAT: Переименовать файлы в папках по имени папки

Допустим есть папки, в каждой папке лежит картинка (произвольное_имя_файла.bmp). Нужно переименовать все файлы *.bmp в имя папки. Для этого создаем файл с расширением .bat и запускаем в нужном месте.
@echo off
SetLocal EnableExtensions
for /f "delims=" %%a in ('2^>NUL dir /b /a-d /s .\*.bmp') do (
 if /i "%%~dpa" neq "%~dp0" (
  for %%b in ("%%~a\..") do (
   attrib -S -H "%%~a"
   ren "%%~a" "%%~nxb%%~xa"
   echo ren "%%~a" "%%~nxb%%~xa"
  )
 )
)
pause
  • Если картинка будет скрытой или системной, этот код также снимет данные атрибуты.
  • При их наличии нельзя переименовать командой ren. Картинки в одной папке (на одном уровне) с батником пропускаются.
  • Предполагается, что в каждой папке по одной картинке, иначе будет переименована только первая.
  • По остальным получите ошибку сообщением в консоль.