@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set "count=0"
:: Перебираем все файлы в папке, кроме самого батника
for /f "delims=" %%F in ('dir /b /a-d 2^>nul') do (
if /i not "%%F"=="%~nx0" (
set "name=%%~nF"
set "ext=%%~xF"
set "new_name=!name!"
:: Отрезаем до 3 цифр с начала имени по очереди
for /L %%i in (1, 1, 3) do (
if defined new_name (
set "first=!new_name:~0,1!"
for %%d in (0 1 2 3 4 5 6 7 8 9) do (
if "!first!"=="%%d" set "new_name=!new_name:~1!"
)
)
)
:: Если цифры в начале были удалены — проверяем, не идет ли следом точка
if not "!new_name!"=="!name!" (
if defined new_name (
if "!new_name:~0,1!"=="." set "new_name=!new_name:~1!"
)
:: Если после удаления цифр и точки от имени что-то осталось — переименовываем
if defined new_name (
if exist "!new_name!!ext!" (
echo [Пропуск] Файл "!new_name!!ext!" уже существует.
) else (
ren "%%F" "!new_name!!ext!"
echo "%%F" ---^> "!new_name!!ext!"
set /a count+=1
)
) else (
echo [Пропуск] Имя файла "%%F" состоит только из цифр и точки.
)
)
)
)
echo.
echo [Готово] Переименовано файлов: !count!
pause