Массовое переименование файлов в Windows, чтобы последовательно генерировать новые имена

446
Densetsu

Мне нужна помощь в переименовании некоторых имен файлов. У меня есть около 300 каталогов. Все файлы являются файлами Word .docxи должны оставаться файлами Word после переименования.

В каждой папке у меня от 1 до 20 файлов ( не более 26). Мне нужно взять их в некотором порядке (в идеале в алфавитном порядке по их текущему имени) и переименовать их в соответствии с этим шаблоном:

Example A.docx Example B.docx Example C.docx etc.  

Я не могу использовать внешнее программное обеспечение, только терминал.

-2
Ваш вопрос не ясен. Вы хотите просмотреть каждую папку, а затем в качестве первого файла дать ей имя «Пример A», второй файл «Пример B» и т. Д.? Какой порядок следует применять? Что должно произойти, если существует более 26 файлов? Что ты уже пробовал? Где вы застряли? slhck 6 лет назад 0
Вы смотрели на использование команды forfiles в командной строке? Trenly 6 лет назад 0
Исследование "* команды передачи через цикл` FOR / F` * ". Возможно, вы захотите использовать команду `DIR / S / B` и не забудьте использовать` "TOKENS = *" `или, возможно,` "DELIMS =" `, чтобы удалить пробел в качестве ограничителя для вывода команды или что-то еще , быстрый пример `for / f" tokens = * "% a in ('dir / s / b""') do echo"% ~ a "` соответственно используйте команду `REN` и исследуйте" *, используя для цикла "подстановки переменных" * ". Pimp Juice IT 6 лет назад 1
@slhck Действительно, первый файл будет Примером A, второй - Примером B и так далее. В алфавите никогда не бывает больше файлов, чем букв. Итак, у меня есть около 300 папок, и переименование всего вручную было кошмарным. Я попробовал встроенное Windows массовое переименование, но оно дает им цифры + копию в имени файла, что не работает для меня. Большинство советов не применимо для меня, так как мне нужен пробел (и не подчеркивание_) между «Образцом» и буквой. Это помогает? Densetsu 6 лет назад 0
Да, это проясняет ситуацию. Пожалуйста, [отредактируйте] свой вопрос, чтобы прояснить его, иначе вы рискуете закрыть его. slhck 6 лет назад 0
Добро пожаловать в Супер пользователя! Обратите внимание, что https://superuser.com не является бесплатным сервисом для написания скриптов / кодов. Если вы сообщите нам, что вы уже пробовали (включая скрипты / код, который вы уже используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Https://superuser.com/help/how-to-ask). DavidPostill 6 лет назад 0
(1) Я отредактировал ваш вопрос. Пожалуйста, просмотрите и исправьте все ошибки, которые я сделал. … (Продолжение) Scott 6 лет назад 0
(Продолжение)… (2) Вы говорите: «Я воспользовался предложением снизу комментариев, которое работает; единственная проблема в том, что компьютер не распознает формат файлов ». (2a) Вам следует *** сказать ***, что вы пытались. Скопируйте сценарий в свой вопрос (конечно же, указав источник). (2b) Я предполагаю, что вы говорите об [ответе Гарримца] (https://superuser.com/q/1350663/150988#1350697). [robinCTS опубликовал комментарий час назад] (https://superuser.com/q/1350663/150988#comment2026072_1350697), объясняя, как решить эту проблему. Ты это пробовал? Что случилось? Scott 6 лет назад 1

2 ответа на вопрос

0
harrymc

Вот скрипт PowerShell, который делает то, что вы просите:

$letters = [char[]]([char]'A'..[char]'Z') $directoryName = $null $count = 0 Get-ChildItem -Path "your folder path" -File -Recurse |  ForEach-Object { if ($directoryName -eq $null -or $directoryName -ne $_.DirectoryName) { $directoryName = $_.DirectoryName $count = 0 } $newname = "Example " + $letters[$count++] + ".docx" Rename-Item $_.fullname $newname } 

Сначала сделайте резервную копию.

Спасибо! Я запустил скрипт, но он не меняет ни одного из имен. Название папки «AsReceived». Есть ли какая-то часть скрипта, которой вы поделились, мне нужно изменить какую-либо папку / путь? Densetsu 6 лет назад 0
Да, часть, которая хитро спрятана как «путь к вашей папке». harrymc 6 лет назад 0
Удивительно, теперь это действительно работает. Последний вопрос - файлы, которые я переименовываю, имеют формат Word, но после переименования система больше не распознает их как таковые. Любое средство от этого? Densetsu 6 лет назад 0
@Densetsu Вам необходимо добавить расширение `.doc`, т.е.` $ newname = "Example" + $ letters [$ count ++] + ".doc" `. robinCTS 6 лет назад 0
Правильный. Все ли файлы `.doc` или` .docx`? Или оба типа могут быть смешаны? harrymc 6 лет назад 0
Если они все одного типа, просто измените скрипт, как указано выше. В противном случае скрипт нужно немного улучшить. harrymc 6 лет назад 0
Файлы docx, я пробовал, но не думал ставить кавычки. БЛАГОДАРЮ ВАС! Теперь он отлично работает, и вы сэкономили мне часы работы. Хотелось бы, чтобы кто-нибудь обучал таких трюков нетехникам. И благодаря доброй душе, которая редактировала мой оригинальный пост, теперь это действительно имеет больше смысла. Densetsu 6 лет назад 0
Я отредактировал ваш пост и мой ответ с учетом нашей дискуссии. При желании можно найти огромное количество информации, выполнив поиск, например, «Учебник по PowerShell». harrymc 6 лет назад 0
-1
BruceJo

Я согласен, что это все еще плохо сформулированный вопрос. Я предполагаю, что у вас есть файлы, A,B,Cи вы хотите переименовать их Example A Example B Example C

У меня были отличные результаты с The Rename Program

Похожие вопросы