Как переименовать файлы данными из Excel: от ручных методов до автоматизации

Переименование сотен файлов по данным из Excel — задача, с которой сталкиваются при обработке фотоархивов, документов клиентов или каталогов товаров. Если имена файлов не соответствуют артикулам, названиям или кодам из таблицы, ручное переименование займёт часы. Проблема усугубляется, когда структура имён в Excel не совпадает с текущими именами файлов (например, IMG_001.jpgАРТ-2026-001.jpg). Решение лежит в связке Excel с инструментами автоматизации: от встроенных функций Windows/Mac до скриптов на Python или PowerShell.

Ключевой момент — корректно экспортировать данные из Excel в формат, который понимают утилиты переименования. Ошибка на этом этапе (например, неправильный разделитель столбцов или кодировка) приведёт к сбою всего процесса. Далее разберём методы от простейших (для 10–50 файлов) до продвинутых (для тысяч файлов), учитывая ограничения операционных систем и формат исходных данных.

1. Подготовка данных в Excel: структурируем таблицу для переименования

Перед переименованием файлов необходимо привести таблицу Excel к виду, который позволят использовать её данные в качестве новых имён. Основные требования:

  • 📌 Столбец с текущими именами файлов — должен содержать точные названия (включая расширения, например .jpg, .pdf). Если файлы имеют последовательную нумерацию (например, file_001.txt), можно использовать формулы для генерации имён.
  • 📌 Столбец с новыми именами — здесь указываются желаемые названия. Убедитесь, что они соответствуют правилам именования файлов в вашей ОС (например, без символов / \ : * ? " < > |).
  • 📌 Уникальные идентификаторы — если файлы и данные в Excel связываются по артикулу или коду, добавьте отдельный столбец для сопоставления.

Пример корректной структуры таблицы:

Текущее имя файлаНовый артикулНовое имя файла
photo_001.jpgART-2026-001ART-2026-001.jpg
document_045.pdfDOC-2026-045DOC-2026-045.pdf
scan_12.pngSCN-2026-012SCN-2026-012.png

Для генерации нового столбца с полными именами файлов (включая расширения) используйте формулу:

=CONCATENATE(B2;".jpg")

где B2 — ячейка с артикулом, а ".jpg" — расширение. Для динамического определения расширения из текущего имени файла применяйте функцию =RIGHT(A2;4) (если расширение всегда 3–4 символа).

2. Ручное переименование с использованием Bulk Rename Utility (для Windows)

Для небольших партий файлов (до 200–300 штук) подойдёт программа Bulk Rename Utility (BRU). Она позволяет импортировать данные из Excel и применять их к файлам в папке. Алгоритм действий:

  1. Экспортируйте таблицу Excel в формат .csv (Файл → Сохранить как → CSV (разделители — запятые)).
  2. Откройте BRU, выберите файлы для переименования (перетащите их в окно программы).
  3. В меню Name (11) выберите Import Names from File и укажите путь к .csv-файлу.
  4. Настройте соответствие столбцов: в Source Name укажите столбец с текущими именами, в New Name — с новыми.
  5. Нажмите Rename для применения изменений.

Преимущество BRU — предварительный просмотр результатов (Preview), который показывает, какие файлы будут переименованы, а какие пропущены из-за несовпадений. Программа также поддерживает регулярные выражения для сложных замен.

Как исправить ошибку "No matches found" в BRU

Если BRU не находит совпадений между файлами и данными из .csv, проверьте:

- Совпадают ли регистры символов (например, File.jpgfile.jpg в некоторых настройках).

- Правильно ли указан разделитель в .csv (для России часто требуется ; вместо ,).

- Нет ли скрытых символов (например, пробелов в конце имён). Используйте в Excel функцию =TRIM() для очистки.

3. Автоматизация через PowerShell (Windows)

Для массового переименования на Windows без сторонних программ подходит скрипт на PowerShell. Он считывает данные из .csv-файла (экспортированного из Excel) и применяет их к файлам в указанной папке. Пример скрипта:

$csvData = Import-Csv -Path "C:\path\to\your\file.csv" -Delimiter ";"

$sourceFolder = "C:\path\to\your\files\"

foreach ($row in $csvData) {

$oldName = $row."Текущее имя файла"

$newName = $row."Новое имя файла"

$oldPath = Join-Path -Path $sourceFolder -ChildPath $oldName

$newPath = Join-Path -Path $sourceFolder -ChildPath $newName

if (Test-Path $oldPath) {

Rename-Item -Path $oldPath -NewName $newName -Force

Write-Host "Переименован: $oldName → $newName"

} else {

Write-Host "Файл не найден: $oldName" -ForegroundColor Red

}

}

Ключевые моменты:

  • 🔹 Укажите правильный Delimiter (разделитель) в Import-Csv. Для России это часто ;.
  • 🔹 Проверьте кодировку .csv-файла: скрипт может некорректно считывать данные, если файл сохранён в UTF-8 с BOM. Используйте Notepad++ для конвертации в UTF-8 без BOM.
  • 🔹 Параметр -Force позволяет перезаписывать существующие файлы. Уберите его, если нужно избежать конфликтов.
📊 Какой метод переименования вы используете чаще?
Ручной (через Проводник)
Сторонние программы (BRU, Advanced Renamer)
Скрипты (PowerShell, Python)
Другое

4. Переименование на Mac с помощью Automator и Terminal

На macOS для автоматизации переименования удобно использовать Automator или команды Terminal. Рассмотрим оба варианта.

Способ 1: Automator

  1. Откройте Automator (Приложения → Утилиты).
  2. Создайте новый рабочий процесс (Workflow) и добавьте действие Run Shell Script.
  3. Вставьте скрипт (аналогично PowerShell, но для Bash):
    while IFS=, read -r oldname newname; do
    

    mv "$1/$oldname" "$1/$newname"

    done < "$1/rename_list.csv"

    где $1 — папка с файлами, а rename_list.csv — экспортированная таблица.

  4. Сохраните как приложение и запустите, перетащив папку с файлами на иконку.

Способ 2: Terminal

Для продвинутых пользователей подойдёт однострочная команда:

cd /путь/к/папке/ && while read -r old new; do mv "$old" "$new"; done < rename_list.csv

5. Python-скрипт для кросс-платформенного переименования

Python подходит для сложных задач, когда нужно:

  • 🐍 Обрабатывать тысячи файлов без ограничений ОС.
  • 🐍 Динамически генерировать новые имена на основе нескольких столбцов Excel (например, {Артикул}_{Название}_{Дата}.pdf).
  • 🐍 Логировать ошибки и пропущенные файлы.

Пример скрипта с использованием библиотек pandas и os:

import pandas as pd

import os

Чтение данных из Excel

df = pd.read_excel("rename_list.xlsx")

folder_path = "/путь/к/папке/"

for index, row in df.iterrows():

old_name = row["Текущее имя"]

new_name = row["Новое имя"]

old_path = os.path.join(folder_path, old_name)

new_path = os.path.join(folder_path, new_name)

if os.path.exists(old_path):

os.rename(old_path, new_path)

print(f"Переименован: {old_name} → {new_name}")

else:

print(f"Ошибка: файл {old_name} не найден")

Для установки зависимостей выполните:

pip install pandas openpyxl

Критическое замечание: если скрипт прерывается, часть файлов останется переименованной, а часть — нет. Чтобы избежать хаоса, создайте резервную копию папки перед запуском или используйте транзакционное переименование (например, через временную папку).

6. Ошибки и их решения

Даже при тщательной подготовке возможны сбои. Рассмотрим типичные проблемы и способы их устранения:

ОшибкаВозможная причинаРешение
Файлы не переименовываются, хотя данные в Excel корректны Несовпадение кодировок в .csv или регистра символов Сохраните .csv в UTF-8 без BOM и проверьте регистр имён
Скрипт выдаёт File not found для существующих файлов Некорректный путь к папке или скрытые символы в именах Используйте os.path.abspath() для абсолютных путей и =TRIM() в Excel
Новые имена обрезаются или содержат иероглифы Неправильная кодировка при экспорте из Excel Экспортируйте в .csv с кодировкой UTF-8 и разделителем ;

☑️ Проверка перед переименованием

Выполнено: 0 / 4

Если после переименования файлы стали недоступны, проверьте:

  • 🔍 Расширения файлов — иногда они "съедаются" при переименовании. Например, file.txt становится file.
  • 🔍 Права доступа — на macOS/Linux может потребоваться sudo для переименования в системных папках.
  • 🔍 Длину имён — в Windows максимальная длина пути составляет 260 символов.

7. Альтернативные программы для массового переименования

Если скрипты кажутся сложными, воспользуйтесь специализированными программами:

ПрограммаПлатформаОсобенности
Advanced Renamer Windows Поддержка импорта из .csv, .xlsx, регулярные выражения, предварительный просмотр
NameChanger macOS Интуитивный интерфейс, работа с метаданными файлов
Rename Master Windows, macOS, Linux Кросс-платформенность, поддержка шаблонов имён

Для Advanced Renamer алгоритм аналогичен BRU:

  1. Импортируйте список файлов в программу (перетащите папку).
  2. Добавьте метод переименования Import names from file.
  3. Укажите .csv-файл и сопоставьте столбцы.
  4. Проверьте результат в окне предварительного просмотра.
Как переименовать файлы по шаблону без Excel

Если данных в Excel нет, но нужно привести имена к единому формату (например, добавить префикс или заменить части имени), используйте в Advanced Renamer метод New name с шаблоном:

- [Inc:1]_ — добавит порядковый номер.

- [Date:Y-M-D]_ — добавит текущую дату.

- [Replace:old:new] — заменит часть имени.

FAQ: Частые вопросы

Можно ли переименовать файлы прямо из Excel без экспорта в CSV?

Нет, Excel не имеет встроенных инструментов для переименования файлов на диске. Однако можно написать VBA-макрос, который будет взаимодействовать с файловой системой через FileSystemObject. Пример:

Sub RenameFiles()

Dim fso As Object, folder As Object, file As Object

Set fso = CreateObject("Scripting.FileSystemObject")

Set folder = fso.GetFolder("C:\путь\к\папке\")

For Each file In folder.Files

' Логика переименования здесь

newName = Replace(file.Name, "старое", "новое")

Name file.Path As folder.Path & "\" & newName

Next file

End Sub

Обратите внимание: макросы требуют разрешения на выполнение и могут быть заблокированы антивирусом.

Как переименовать файлы, если их имена содержат кириллицу, а в Excel — латиница?

Используйте функцию =PHONETIC() в Excel для транслитерации кириллицы в латиницу, либо напишите пользовательскую функцию на VBA:

Function Translit(text As String) As String

Dim rus() As String, lat() As String

rus = Array("а", "б", "в", ... , "я")

lat = Array("a", "b", "v", ... , "ya")

' Логика замены символов

Translit = StrConv(text, vbLowerCase)

' Замена каждого символа

End Function

Затем примените её к столбцу с именами файлов.

Что делать, если после переименования файлы не открываются?

Это происходит, если:

  • 🔴 Изменилось расширение (например, .jpg стало .jpe). Восстановите правильное расширение вручную.
  • 🔴 Файл используется другой программой (например, фотография открыта в просмотрщике). Закройте все программы и повторите попытку.
  • 🔴 Повреждена файловая система. Запустите проверку диска (chkdsk /f на Windows или fsck на macOS).
Как переименовать файлы в облачных хранилищах (Google Drive, Yandex Disk) по данным из Excel?

Облачные сервисы не поддерживают массовое переименование через интерфейс, но есть обходные пути:

  1. Синхронизируйте папку с облаком на локальный диск.
  2. Переименуйте файлы одним из описанных выше методов.
  3. Дождитесь синхронизации изменений с облаком.

Для Google Drive можно использовать Google Apps Script с доступом к Google Sheets и Drive API, но это требует знаний JavaScript.

Можно ли отменить массовое переименование, если что-то пошло не так?

Отмена зависит от метода:

  • 🔄 Ручные методы (через Проводник или BRU): используйте Ctrl+Z сразу после ошибки.
  • 🔄 Скрипты: восстановите файлы из резервной копии или напишите обратный скрипт (замените old_name и new_name местами).
  • 🔄 Программы (например, Advanced Renamer): проверьте наличие функции Undo (обычно доступна до закрытия программы).

Если резервной копии нет, попробуйте восстановить предыдущие имена через журнал файловой системы (например, Shadow Copy на Windows).