Массовое переименование файлов в Windows часто вызывает проблемы, когда требуется чёткая последовательность названий без потери расширений и без конфликтов имен. Стандартные инструменты Проводника ограничены, особенно при работе с большим количеством файлов или разными форматами. В таких случаях целесообразно использовать BAT-скрипт, автоматизирующий процесс и гарантирующий корректный результат.
В этом материале приведён готовый BAT-скрипт, который переименовывает все файлы в папке в последовательность от 1 до N:
- с сохранением расширений (например, 1.txt, 2.jpg, 3.pdf).
- с возможностью указать расширение файлов, которые нужно переименовывать (например, только .txt или только .jpg)
Скрипт работает в два этапа: сначала присваивает временные имена, затем выполняет финальную нумерацию. Такой подход устраняет риск перезаписи файлов и обеспечивает стабильную работу даже при обработке тысяч позиций. Порядок переименования соответствует алфавитной сортировке, что позволяет контролировать результат без дополнительных инструментов.
Готовый BAT-скрипт для переименования всех файлов по порядку (1.txt, 2.jpg, 3.pdf)
rem Скрипт работает в папке, где находится сам файл, и переименовывает все файлы в номера от 1 до N. Расширения остаются. Сам rename.bat не переименовывается
@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
rem Переходим в папку с этим BAT-файлом
cd /d "%~dp0"
set "batname=%~nx0"
set "prefix=%~n0_temp_"
set "count=0"
echo Етап 1: Временные имена...
for /f "delims=" %%a in ('dir /b /a-d') do (
if /I not "%%a"=="%batname%" (
set /a count+=1
ren "%%a" "%prefix%!count!%%~xa"
)
)
echo Етап 2: Финальные номера...
set "count=0"
for /f "delims=" %%a in ('dir /b /a-d %prefix%*') do (
set /a count+=1
ren "%%a" "!count!%%~xa"
)
echo.
echo Готово! Переименовано файлов: %count%
pause
Примечание.
Если нужно переименовать не только файлы, но и папки, то уберите параметр /a-d в двух строках с dir /b /a-d (оставьте просто dir /b).
Готовый BAT-скрипт для переименования указанных типов файлов по порядку
@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
cd /d "%~dp0"
set "batname=%~nx0"
set "prefix=%~n0_temp_"
set "count=0"
:ask
echo.
echo ============================================
echo ВВЕДИТЕ расширение файлов для переименования
echo Примеры: .txt .jpg .pdf .docx
echo Для ВСЕХ файлов введите: all
echo ============================================
set /p "ext=Ваш выбор: "
if "%ext%"=="" goto ask
rem Проверяем ввели "all" (без учёта регистра)
if /I "%ext%"=="all" (
set "ext="
) else (
rem Автоматически добавляем точку в начало, если её нет
if not "%ext:~0,1%"=="." set "ext=.%ext%"
)
echo.
if "%ext%"=="" (
echo Режим: ВСЕ файлы
) else (
echo Расширение: %ext%
)
echo Етап 1: Временные имена...
if "%ext%"=="" (
for /f "delims=" %%a in ('dir /b /a-d') do (
if /I not "%%a"=="%batname%" (
set /a count+=1
ren "%%a" "%prefix%!count!%%~xa"
)
)
) else (
for /f "delims=" %%a in ('dir /b /a-d *%ext%') do (
set /a count+=1
ren "%%a" "%prefix%!count!%ext%"
)
)
echo Етап 2: Финальные номера...
set "count=0"
if "%ext%"=="" (
for /f "delims=" %%a in ('dir /b /a-d %prefix%*') do (
set /a count+=1
ren "%%a" "!count!%%~xa"
)
) else (
for /f "delims=" %%a in ('dir /b /a-d %prefix%*%ext%') do (
set /a count+=1
ren "%%a" "!count!%ext%"
)
)
echo.
echo ============================================
echo ГОТОВО! Переименовано файлов: %count%
echo ============================================
pause
Как использовать:
- Скопируйте код в блокнот и сохраните файл с расширением .bat в нужной папке (Например, rename.bat).
- Запустите BAT двойным щелчком.
