При работе с большим количеством документов или изображений часто возникает необходимость массово изменить имена файлов — например, удалить лишнюю часть названия, добавленную после обработки или сжатия. Делать это вручную долго и неудобно, особенно когда таких файлов десятки или сотни. Гораздо эффективнее воспользоваться простым BAT-скриптом, который автоматизирует процесс переименования. Благодаря нескольким строкам кода можно быстро удалить нежелательные суффиксы из названий, например «-compressed» или «-min», и оставить чистые, понятные имена файлов.
Ниже приведены три варианта BAT-скриптов для переименования файлов после их обработки сервисом iLovePDF и OptimiZilla (imagecompressor):
- Переименование файлов в текущей папке
- Переименование файлов в указанной папке
- Переименование файлов в соседней папке
Каждый пример сопровождается объяснением. Надеюсь, мой код вам пригодится.
Когда может понадобиться переименование файлов с помощью BAT
Сервисы iLovePDF и OptimiZilla, после сжатия файлов пакетной обработкой, добавляют к их имени суффикс «-compressed» и «-min». Это делается для того, чтобы пользователь не потерял оригинальные файлы и не перепутал их со сжатыми. Но бывают моменты, когда нужно, чтобы сжатые файлы имели такое же имя, как и оригинальные. И тогда возникает необходимость в автоматизации процесса. Ведь одно дело переименовать вручную один-два файла, а другое дело — переименовать 100-200 файлов.
В таких случаях на помощь пользователям Windows приходит Batch Script.
Записав несколько строк кода в BAT файл и запустив его, переименование файлов произойдет за несколько секунд.
Переименование файлов в текущей папке
Этот BAT-скрипт автоматически переименовывает все PDF-файлы в папке, где находится сам файл BAT, удаляя из названий суффикс -compressed.
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set "folder=%~dp0"
echo Текущая папка:
echo %folder%
echo.
set /p confirm=Хотите ли вы переименовать файлы по этому пути? (Yes/No):
if /i "%confirm%"=="Yes" (
echo.
echo 🔄 Выполняется переименование...
echo.
cd /d "%folder%"
for %%f in (*-compressed.pdf) do (
set "oldname=%%f"
set "newname=!oldname:-compressed=!"
ren "%%f" "!newname!"
echo Переименовано: %%f → !newname!
)
echo.
echo ✅ Готово! Все файлы c -compressed переименовано.
) else (
echo ❌ Операция отменена.
)
pause
Объяснение кода скрипта
@echo off— отключает отображение команд в окне консоли, оставляя только необходимые сообщения для пользователя.chcp 65001 >nul— устанавливает кодировку UTF-8 для корректного отображения кириллических символов.setlocal enabledelayedexpansion— позволяет использовать переменные внутри циклов с «!» вместо «%». Это указание системе обновлять значения переменных сразу, когда они изменяются, а не после завершения цикла.set "folder=%~dp0"— определяет путь к папке, где находится BAT-файл, чтобы работать именно с ней.- Блок
echoіset /p confirmпоказывает пользователю текущую папку и запрашивает подтверждение на выполнение переименования. if /i "%confirm%"=="Yes"проверяет, согласился ли пользователь;/iделает сравнение нечувствительным к регистру.cd /d "%folder%"меняет рабочую директорию на папку BAT-файла, чтобы циклforобрабатывал нужные файлы.- Цикл
for %%f in (*-compressed.pdf) do (...)перебирает все PDF-файлы с суффиксом -compressed. set "oldname=%%f"сохраняет оригинальное имя файла.set "newname=!oldname:-compressed=!"создаёт новое название, удаляя -compressed.ren "%%f" "!newname!"переименовывает файл.echo Переименовано: %%f → !newname!выводит информацию об изменении названия.- Если пользователь отказывается (
else), выводится сообщение об отмене операции. pauseостанавливает выполнение скрипта, чтобы можно было увидеть результаты перед закрытием консоли.
Переименование файлов в указанной папке
Этот BAT-скрипт позволяет автоматически переименовать все PDF-файлы в указанной папке, удаляя из их названий суффикс -compressed.
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
REM Указываем путь к нужной папке
set "folder=C:\Users\Имя_ПК\Документы\iLovePDF_Output\ilovepdf-compress"
echo Выбрано папку:
echo %folder%
echo.
set /p confirm=Хотите ли вы переименовать файлы в этой папке?? (Yes/No):
if /i "%confirm%"=="Yes" (
echo.
echo 🔄 Выполняется переименование...
echo.
cd /d "%folder%"
for %%f in (*-compressed.pdf) do (
set "oldname=%%f"
set "newname=!oldname:-compressed=!"
ren "%%f" "!newname!"
echo Переименовано: %%f → !newname!
)
echo.
echo ✅ Готово! Все файлы с -compressed переименованы.
) else (
echo ❌ Операция отменена.
)
pause
Пошаговое объяснение работы кода
@echo off— отключает отображение команд в консоли, оставляя только сообщения для пользователя.chcp 65001 >nul— устанавливает кодировку UTF-8 для правильного отображения кириллических символов.setlocal enabledelayedexpansion— позволяет использовать переменные внутри циклов с расширением через!, что необходимо для обработки имен файлов в циклеfor. Без этого скрипт не будет правильно переименовывать файлы.set "folder=..."— задаёт конкретный путь к папке, где находятся файлы для переименования.- Блок
echoпоказывает пользователю выбранную папку, аset /p confirmзапрашивает подтверждение на выполнение операции. if /i "%confirm%"=="Yes"проверяет, согласился ли пользователь на переименование, при этом/iделает сравнение нечувствительным к регистру букв.cd /d "%folder%"меняет рабочую директорию на указанную папку, чтобы циклforобрабатывал нужные файлы.- Цикл
for %%f in (*-compressed.pdf) do (...)перебирает все PDF-файлы с суффиксом -compressed: set "oldname=%%f"сохраняет оригинальное имя файла.set "newname=!oldname:-compressed=!"создаёт новое имя файла, удаляя часть -compressed.ren "%%f" "!newname!"выполняет фактическое переименование файла.echo Переименовано: %%f → !newname!выводит информацию об изменении названия для контроля.- Если пользователь отказывается от операции (
else), выводится сообщение об отмене. pauseостанавливает выполнение скрипта, чтобы пользователь мог просмотреть результаты перед закрытием консоли.
Переименование файлов в соседней папке
Этот BAT-скрипт автоматически переименовывает изображения JPG, удаляя из имен файлов суффикс -min, при условии, что папка imagecompressor находится в том же каталоге, что и BAT-файл.
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
REM --- Получаем путь к папке imagecompressor относительно расположения BAT ---
set "folder=%~dp0imagecompressor"
if not exist "%folder%" (
echo ❌ Папку "imagecompressor" не найдено по пути:
echo %folder%
pause
exit /b
)
echo Текущая папка:
echo %folder%
echo.
set /p confirm=Хотите ли вы переименовать файлы по этому пути? (Yes/No):
if /i "%confirm%"=="Yes" (
echo.
echo 🔄 Выполняется переименование...
echo.
cd /d "%folder%"
REM --- Обрабатываем файлы с расширением .JPG и .jpg ---
for %%f in (*-min.JPG *-min.jpg) do (
if exist "%%f" (
set "oldname=%%f"
set "newname=!oldname:-min=!"
ren "%%f" "!newname!"
echo Переименовано: %%f → !newname!
)
)
echo.
echo ✅ Готово! Все файлы с -min переименованы.
) else (
echo ❌ Операция отменена.
)
pause
Пошаговое объяснение работы скрипта
@echo off— скрывает команды в консоли, оставляя только сообщения для пользователя.chcp 65001 >nul— устанавливает кодировку UTF-8 для корректного отображения кириллических символов.setlocal enabledelayedexpansion— позволяет использовать переменные внутри циклов с расширением через!. Этим мы указываем системе, что нужно обновлять значения переменных сразу, когда они изменяются, а не после завершения цикла. Без этого указания скрипт будет работать неправильно.set "folder=%~dp0imagecompressor"— определяет путь к папке imagecompressor, расположенной рядом с BAT-файлом.- Блок
if not exist "%folder%"проверяет, существует ли папка; если нет — выводится сообщение об ошибке, и скрипт останавливается. echo і set /p confirmпоказывают текущий путь и запрашивают подтверждение пользователя перед переименованием.if /i "%confirm%"=="Yes"проверяет, дал ли пользователь согласие;/iделает сравнение нечувствительным к регистру.cd /d "%folder%"меняет рабочую директорию на нужную папку для обработки файлов.- Цикл
for %%f in (*-min.JPG *-min.jpg) do (...)перебирает все JPG-файлы с суффиксом -min: if exist "%%f"убеждается, что файл действительно существует.set "oldname=%%f"сохраняет оригинальное имя файла.set "newname=!oldname:-min=!"формирует новое имя без -min.ren "%%f" "!newname!"переименовывает файл.echo Переименовано: %%f → !newname!выводит результат для контроля.- Если пользователь отказывается (
else), выводится сообщение об отмене операции. pauseостанавливает скрипт после выполнения, чтобы можно было просмотреть результаты.
При необходимости, используя приведенные выше примеры кода, вы легко сможете написать собственный скрипт для переименования файлов. Например, можно сделать так, чтобы скрипт обрабатывал не только файлы с расширением PDF или JPG, но и с любым другим. Также можно убрать запрос на подтверждение переименования и вывод результата обработки файлов. Это позволит еще больше сэкономить время при работе с большим количеством файлов.
