Нейросеть полезна для составления новых имён, но выполнять переименование лучше по отдельной проверенной карте. В нашем примере ChatGPT подготовил 30 соответствий, проверка заранее остановила вариант с совпадающими именами, а рабочий сценарий переименовал копии файлов и вернул все 30 исходных имён. Оригинальная папка не менялась.
Разберём этот порядок на Windows и PowerShell: список файлов, карта «было → стало», предварительный просмотр, применение к копии и откат. Начать можно в обычном текстовом чате без платного API и загрузки содержимого файлов. В практическом запуске использовался ChatGPT Plus с уровнем рассуждения «Средний»; отдельной проверки на Free здесь нет.
Почему сначала нужна карта имён
Представьте две записи: Бриф проекта.txt и Бриф_проекта.txt. Пока между словами стоят разные разделители, Windows хранит их как отдельные файлы. Если привести пробелы и подчёркивания к дефисам, оба имени превращаются в brif-proekta.txt. Это коллизия: две исходные записи претендуют на один адрес.
Команда «переименуй всё аккуратно» скрывает эту проблему. Таблица делает её видимой ещё до изменений. В каждой строке должны оставаться постоянный ID, точное исходное имя и предложенное новое имя. Дополнительная колонка с группой коллизии помогает увидеть, какие пары пришлось развести.
Для учебного набора мы взяли 15 пар: бриф, смету, акт, отчёт и другие рабочие названия. Внутри каждой пары различаются пробел и подчёркивание. Всего получилось 30 пустых файлов с расширениями txt, csv и md. Никаких настоящих документов в тесте нет.
Подготовьте отдельную копию
Скачайте чистый учебный ZIP и полностью распакуйте его в новую отдельную папку. Комплект содержит инструкцию README.txt, два скрипта, обязательную карту approved.csv, исходный промпт и отдельную испорченную карту для проверки коллизии. Старых журналов запуска в нём нет.
Откройте PowerShell в распакованной папке и выполните .\generate-test-files.ps1. Генератор создаст 30 пустых учебных файлов в original и ещё 30 в working-copy. Он не копирует ваши документы, не очищает существующие каталоги и откажется работать в уже использованной папке. В поставке эти два каталога пустые; содержимое файлов в опыте не проверяется.
Скрипт переименования работает только с working-copy рядом с собой и отказывается запускаться, если там не 30 пустых файлов. Если система запрещает запуск скриптов, не отключайте её политику ради примера: используйте разрешённую среду или обратитесь к администратору.
Такая граница намеренно узкая. Не меняйте путь в скрипте на папку с настоящей работой. Сначала повторите учебный пример целиком. Для своих документов подготовьте отдельную копию и адаптируйте проверки под конкретный набор. В названиях тоже бывают личные данные: перед отправкой списка в чат замените фамилии, номера договоров и названия клиентов учебными обозначениями.
Не включайте в этот опыт подпапки, ярлыки, системные файлы и документы, которые сейчас открыты в редакторе. Наш сценарий проверяет плоскую папку с небольшим известным набором; переносить его результат на сложный архив без дополнительной проверки нельзя.
Попросите ИИ вернуть CSV без команд
Сначала задайте правило именования, а затем передайте список. Чем меньше решений оставлено на усмотрение модели, тем легче проверить ответ. Вот основная часть нашего запроса:
Помоги безопасно переименовать 30 пустых учебных файлов. Пока ничего не выполняй и не пиши команду массового переименования. Верни только CSV: id,old,new,collision_group. Сохрани все 30 ID и точные old. Новые имена: латинская транслитерация, нижний регистр, слова через дефис, расширение оставить тем же. Если два имени после нормализации совпадают, добавь ко всем участникам суффикс --ID перед расширением. Укажи одинаковую collision_group. Не объединяй и не удаляй строки.
Полный исходный запрос и список 30 имён находятся в файле prompt.txt внутри учебного ZIP. Для повторения готового опыта заново обращаться к нейросети не требуется: проверенная карта approved.csv уже приложена. Если составляете новую карту, копируйте ответ кнопкой копирования кода и сохраняйте CSV в UTF-8. Не перепечатывайте десятки строк вручную: так легко потерять подчёркивание или расширение.
Что ответил ChatGPT и что пришлось уточнить
Модель сохранила все 30 строк и распределила пары по 15 группам. Для брифов предложила brif-proekta--F01.txt и brif-proekta--F02.txt. Суффиксы развели одинаковые основы имён, а txt, csv и md остались на своих местах.
В запросе осталось противоречие: требование нижнего регистра соседствовало с суффиксом из ID вида F01. Ответ сохранил заглавную F. Перед исполнением мы явно перевели только колонку new в нижний регистр и сохранили отдельный утверждённый CSV. Исходный ответ модели не переписывали. Для повторения лучше сразу написать: «суффикс —f01, то есть ID в нижнем регистре».
| ID | Было | В рабочей карте |
|---|---|---|
| F01 | Бриф проекта.txt | brif-proekta—f01.txt |
| F02 | Бриф_проекта.txt | brif-proekta—f02.txt |
| F03 | Смета май.csv | smeta-mai—f03.csv |
| F04 | Смета_май.csv | smeta-mai—f04.csv |
Это удобный пример разделения ролей. Модель предлагает понятные названия. Проверяющий код следит за тем, чтобы ни одна строка не исчезла, имена не совпали, а расширения не поменялись. Успех первой части не отменяет второй.
Проверьте карту до первого изменения
Файл approved.csv — обязательный вход скрипта, а не отчёт о прежнем запуске. Оставьте его в одной папке со скриптом и prompt.txt. В нём 30 соответствий с колонками id,old,new,collision_group; новые имена уже приведены к нижнему регистру, включая суффиксы —f01. Прежде чем запускать Apply, вручную прочитайте все строки: слово approved в названии не заменяет вашу проверку.
У карты из 30 строк должны быть 30 уникальных ID и 30 разных новых имён. Сравнивать имена на Windows нужно без учёта регистра: Report.txt и report.txt не годятся как два разных назначения. Исходное имя в каждой строке должно точно совпасть со списком файлов, а новое — оставаться простым именем без пути.
Наш проверяющий сценарий дополнительно сверяет расширение, допустимые символы, наличие исходного файла и отсутствие файла с целевым именем. Он не перезаписывает существующие назначения и не использует принудительную замену. Если хотя бы одна проверка не прошла, весь этап останавливается до переименования.
Для отдельной контрольной попытки мы испортили копию карты: второй строке назначили новое имя первой. Получили отказ Target collision. После него все 30 имён остались исходными. Это более содержательная проверка защиты, чем один удачный запуск на заведомо правильном списке.
Посмотрите предварительный результат
В учебном ZIP скрипт verified-rename.ps1 поставляется вместе со всеми нужными файлами. После генератора сначала проверьте намеренно испорченную карту:
.\verified-rename.ps1 -Mode Preview -Map collision-example.csv
Ожидается отказ Target collision, без изменения файлов. Затем запустите просмотр правильной карты:
.\verified-rename.ps1 -Mode Preview -Map approved.csv
По умолчанию включён именно просмотр. Скрипт сохранит preview.csv и покажет действия через -WhatIf. По документации Microsoft, Rename-Item меняет имя, а параметр WhatIf показывает предполагаемую операцию. В нашем просмотре изменений было ноль; список рабочей папки после него совпал с оригиналом.
Прочитайте таблицу целиком: после латинизации имя может быть допустимым, но неудобным человеку. Особенно внимательно смотрите сокращения, номера версий и даты. Проверка синтаксиса не понимает, какой документ у вас действительно относится к маю.
Примените карту к копии и проверьте откат
.\verified-rename.ps1 -Mode Apply -Map approved.csv .\verified-rename.ps1 -Mode Rollback -Map approved.csv
Apply заново выполняет проверки, затем переименовывает файлы и пишет журнал: намерение перед каждой операцией и подтверждение после неё. После завершения сверяется полный список новых имён. В нашем запуске получено 30 файлов, все целевые имена совпали с картой, все файлы остались пустыми.
Rollback меняет направление карты: новое имя становится исходным, старое — целевым. Перед ним тоже проверяется состояние папки. После отката все 30 исходных имён восстановились, а папка original осталась без изменений. Журналы и квитанции сохранены рядом с CSV.
Между Apply и Rollback не редактируйте approved.csv. После полного опыта сохраните журналы. Для повторения распакуйте исходный чистый ZIP в ещё одну новую папку: использованный комплект намеренно не разрешает повторный Apply по старому журналу. Не удаляйте квитанции, чтобы принудительно запустить его снова.
Если выполнение прервалось, не запускайте Apply повторно наугад. Сначала сопоставьте фактические имена с журналом: часть файлов могла уже получить новые названия. Скрипт останавливается при существующем журнале; автоматическое восстановление после аварийного завершения в этом примере не проверялось. Откат нормального завершённого запуска не равен резервной копии и не возвращает удалённое содержимое.
Что взять для своих файлов
Полезная часть процесса — не конкретная транслитерация, а последовательность: отдельная копия, постоянные ID, карта имён, проверка коллизий, просмотр, исполнение и обратная проверка. На небольшом наборе это занимает больше шагов, чем одна команда. Зато до массового изменения видно, какой файл получит каждое имя.
Для понятных пронумерованных файлов ИИ может вообще не понадобиться: правило иногда проще выразить обычным шаблоном. Модель особенно удобна там, где нужно привести разнородные человеческие названия к одному стилю. Даже в этом случае отдавайте ей предложение имён, а выполнение оставляйте проверяемому инструменту.
