Переименовать расширение группы файлов. Массовое переименование файлов

На днях, блуждая по интернету, я встретил новую версию своего давнего и верного помощника - программы ReNamer, которая стала моим незаменимым инструментом при массовом переименовании файлов . Действие это рутинное, которое мы можем выполнять и по нескольку раз на день. Каждый из нас решает сию задачу по-своему, например, встроенными средствами операционной системы, не испытывая при этом особых проблем.

Вот-вот, - скажете вы - велика проблема, о чем тут и говорить-то! Хорошо, конечно, когда переименование допускает использование символов маски, и - добавляю - хорошо, если вы умеете пользоваться маской. Но встречаются ситуации, когда применить маску достаточно сложно или вообще невозможно. Казалось бы, тут остается только один выход - переименовывать "ручками" каждый файл отдельно. Ан нет - есть выход, который предлагает очень функциональная, не требующая установки и к тому же бесплатная программа Дениса Козлова ReNamer, о которой и пойдет речь в данной статье.

Скачать программу можно как на компьютерном портале Softodrom.ru , так и на сайте разработчика.

Программа предоставляет пользователю все мыслимые способы группового переименования файлов. Во всяком случае, у меня не хватило фантазии придумать что-нибудь такое, с чем программа не справилась бы! Думаю, что она является незаменимым помощником администраторам и прочему компьютерному люду, а также преподавателям, авторам и иже с ними. Кстати, на что я сразу обратил внимание при обнаружении новой версии ReNamer, так это на появление российской локализации программы. И хотя я и не испытываю особого дискомфорта при работе с английским интерфейсом, но все же, знаете, свой язык он как-то значительно роднее, а - главное - понятнее...

При первой загрузке программы она предложит вам открыть и, соответственно, ознакомиться с кратким руководством по работе (Quick Guide). Если вы имеете базовые понятия английского языка, то советую принять это предложение. Честно говоря, я не часто встречал настолько толковое и при этом краткое описание работы с программой!

Вместе с тем не могу не заметить, что, понимая автора, который ориентирует свое детище на максимально широкий круг пользователей и использует для этого английский язык , он мог бы "сварганить" аналог руководства и на русском, поскольку автор - программист из Тольятти. Кстати, хорошо уже, что российская локализация программы появилась, а то в предыдущих версиях и ее не наблюдалось:). Правда, появилась она только в прошлом году, причем выполнил ее даже и не автор(!) Надеюсь, что автор не шибко будет обижаться на меня за критику, поскольку в работе программа действительно очень хороша.

Идеология программы заключается в создании пользователем правил, согласно которым и происходит переименование файлов. Правила позволяют изменять префиксы и суффиксы программ, заменять, добавлять и удалять части текста в наименовании файлов, добавлять в названия порядковые номера и пр.

Поэтому и само окно программы состоит из двух частей: верхняя - формирование правил переименования файлов, нижняя - выбор файлов. Соответственно, программа имеет и две группы кнопок, расположенных на отдельных панелях: верхняя - для работы с файлами и нижняя - для работы с правилами.


Выбор файлов

Выбор файлов для переименования предельно прост. На верхней панели инструментов щелкаем кнопку "Доб. файлы". Если переименованию подлежат все файлы в папке, то используем инструмент "Доб. папки". Выбранные файлы отображаются в нижней части окна. Для удаления файлов используем общепринятые приемы выделения, после чего на списке файлов вызываем контекстное меню и выбираем из него пункт "Удалить выделенные".


Создание правила

На второй (нижней) панели инструментов в верхнем окне щелкаем кнопку "Добавить" ("Добавить новое правило"), после чего появляется окно "Добавить правило", в котором и происходит формирование правила, по которому будет осуществляться переименование файлов. Для запоминания сформированного правила щелкаем в окне большую кнопку "Добавить правило".

Для редактирования правила осуществляем двойной щелчок на его имени.

Для удаления правила на второй панели инструментов следует щелкнуть кнопку "Удалить".

Рассмотрим примеры формирования некоторых типов правил.


Заменить

  1. Из списка названий правил выбираем "Заменить".
  2. В поле "Найти" определяем часть имени, которую нужно изменить. При этом не используем символ "*".
  3. В поле "Заменить" вводим символы, которыми будет заменяться текст в поле "Найти".
  4. В группе "Совпадения" определяемся с количеством замен в именах.


Удаление

Для удаления в средине имени части текста создаем такое правило.

  1. Из списка названий правил выбираем "Удалить".
  2. В поле "Начиная с" определяем позицию, с которой необходимо начать удаление текста в имени.
  3. В поле "До" определяем количество удаляемых в именах файлов символов.
  4. Для отключения выполнения действий с расширениями включаем действие "Пропускать расширения".
  5. Сохраняем правило, щелкнув кнопку "Добавить правило".


Создание числовых последовательностей (индексировать)

Иногда бывает необходимо изменить наименования файлов Имя1, Имя2, Имя3 так, чтобы их имена содержали числовую последовательность с определенным приростом, например, увеличиваясь на "5": Имя11, Имя26, Имя311. Процедура создания правила такова.

  1. Из списка названий правил выбираем "Индексировать".
  2. Выбираем вариант "Последовательно".
  3. Задаем начальное значение числовой последовательности: "Начать с:".
  4. В поле "Шаг" задаем прирост (шаг) числовой последовательности, с которым будет изменяться числовое значение.
  5. В поле "Куда вставить:" определяем место в имени файла, где будет вставляться числовая последовательность. При этом пользователь имеет возможность задать:
    • Позиция: определяется позиция, начиная с которой в имени файла будет вставляться число. Если, например, для нашего примера установить вторую позицию, то имена файлов будут таковы: И1мя1, И6мя2, И11мя3.
    • Префикс: в начале имени файла. В этом случае имена файлов будут представлять такую последовательность: 1Имя1, 3Имя2, 5Имя3.
    • Суффикс: в конце имени файла. Имена файлов будут такими: Имя11, Имя26, Имя311.
  6. Установка флажка для поля-метки "Дополнять нулями до:" позволяет задать одинаковое количество позиций для всех элементов числовой последовательности. Например, установив в данном поле значение "2" и задействовав вариант "Суффикс" для нашего примера получим такие имена: Имя101, Имя206, Имя311.
  7. Для отключения выполнения действий с расширениями включаем действие "Пропускать расширения".
  8. Сохраняем правило, щелкнув кнопку "Добавить правило".


Определение нескольких правил

Система позволяет применять к именам файлов сразу несколько правил. Главное тут - не запутаться самому с именами, которые должны получиться, поскольку применение правила на каком-то этапе может повлечь создание имени, совпадающего с именем на предыдущем этапе. Впрочем, система об этом сразу же предупредит.

Во избежание таких ситуаций, следуйте простому правилу: не применяйте все правила сразу, а делайте это последовательно, снимая или устанавливая флажки в первой графе, предшествующей названию правила.

При этом пользователь может не только добавлять и удалять правила, но и менять их местами, используя инструменты, расположенные в верхней части окна с правилами.

И еще. Правила используются строго последовательно, именно в том порядке, в котором вы их создавали. При необходимости изменить их последовательность воспользуйтесь кнопками "Вверх" и "Вниз", которые расположены на второй панели инструментов.


И последнее. Переименование

Для того, чтобы посмотреть, что же у нас получается, щелкаем кнопку "Предпросмотр" на панели инструментов, после чего в нижней части окна в графе "Новое имя" отобразятся имена, сформированные по заданным правилам. Собственно говоря, никаких действий предпринимать вообще не надо, если сначала выполнять действие выбора файлов, а уже после этого - формирования правил. В этом случае добавление или изменение правила автоматически влечет отображение файлов с новыми именами.

И, наконец, последний шаг: непосредственно переименование. Щелкаем кнопку "Переименовать" и любуемся нашей работой, не забывая выразить респект автору за удобнейший и к тому же бесплатный инструмент.

И самое последнее. Как следует из аннотации к программе, пользователь имеет возможность работать с ID3v1, ID3v2 и EXIF, а также использовать пакетное переименование папок. А кроме этого, имеется множество пользовательских настроек шаблона переименования.

Валерий ФЕТИСОВ

Для целей тестирования одной программы было необходимо получить массив из больших файлов с расширением txt (размер более 3 Мб), содержимое которых было не важно. Не мудрствуя лукаво, было принято решение о простом переименовании копий файлов фотографий, сделанных с цифровика. В исходной папке было более 70 различных файлов с расширением jpg. Переименование «руками» такого количества файлов вредно для рук и для кармы . Попробуем найти простые методы для автоматизации процесса.

Рассмотрим два варианта массового переименования:

  1. Встроенными средствами Windows
  2. Дополнительными программами

Переименование встроенными средствами Windows

В Проводнике Windows есть возможность массового переименования файлов. Для этого надо выделить нужные папки, нажать на F2, ввести новое название файла, например, test, нажать Enter, и все файлы станут такими:

test.jpg, test (1).jpg, test (2).jpg и т.д. Расширение так сменить не удастся. Метод очень ограничен в своих возможностях, поэтому на нем не останавливаемся и не выделяем его в отдельный.

Откроем консоль Windows, нажав одновременно сочетание клавиш Win + R. Клавиша Win находится рядом с пробелом, на ней изображен флажок Windows.

Появится окно «Выполнить»:


Пишем в строке «Открыть:» слово cmd, как на картинке, нажимаем ОК.

Откроется окно консоли Windows. Пишем в нем cd [путь до папки с файлами для переименования], нажимаем Enter. У меня в этой папке лежит несколько файлов с расширением jpg, которые мне необходимо «переделать» в файлы txt, поэтому далее я пишу команду


Теперь у меня в этой папке файл с расширением txt, как и хотелось.

Плюсы данного решения:

  • Ничего не надо скачивать из Интернета и устанавливать, все уже есть в Windows
  • Весьма быстрое решение

Минусы данного решения:

  • Требует пусть и небольшой, но все же имеющейся квалификации работы за компьютером у пользователя

Рассмотрим другой вариант.

Переименование файлов сторонними программами

Один из самых распространенных вариантов — это переименование при помощи Total Commander.

Открываем данную программу, переходим в нужную нам папку.


У нас есть два варианта действий, которые зависят от того, что мы хотим сделать. Если Вас, как и меня, интересует только смена расширения у выделенных файлов, находящихся в указанной папке, то Вам подойдет больше первый из описанных ниже, если Вам необходимо более хитрое переименование, то лучше обратиться ко второму варианту.

Вариант 1. Простая смена расширений у файлов папки

В правой части окна, приведенного на картинке выше, также переходим в ту папку, в которой необходимо сменить расширение файлов.


Кнопкой Insert выделяем нужные файлы или нажимаем сочетание клавиш Ctrl + A, чтобы выделить все файлы, и нажимаем кнопку F6. Откроется следующее окно:


В конце первой строки в *.* необходимо заменить последнюю звездочку на то расширение, на которое нам надо заменить расширение существующих файлов, в моем случае *.txt.


Нажимаем ОК, расширения у выбранных файлов заменились.

Если нам необходимо более хитрое переименование, то можно попробовать вариант 2.

Вариант 2. Групповое переименование файлов

Также в окне Total Commander выбираем нужную нам папку. Затем выделяем кнопкой Insert нужные нам файлы или нажимаем сочетание клавиш Ctrl + A (Выделить все), затем Ctrl + M, откроется окно группового переименования:

Как на рисунке выше, в области «Поиск и замена» в поле «Найти» пишем jpg, в поле «Заменить на» пишем txt. Нажимаем «Выполнить», радуемся результату. До первого облома . Надо понимать, что если мы идем данным путем, то если файл назывался, например, jpg.jpg, он заменится на txt.txt. Благо, что в данном окне есть кнопка «Откат» (кому?!). Так что данный вид переименования подходит в случае, если нам необходимо, например, добавить счетчик к имени файла. Для этого нажмите кнопку [C] в левой верхней части данного окна и посмотрите на предварительный результат. В поле «Маска для: имени файла» должно быть написано [N][C]. Для отделения счетчика от основного имени файла можно писать в этом поле, например, [N] ([C]). В области «Параметры счетчика» можно указать, с какой цифры начинать считать, с каким шагом и сколько цифр должно отображаться. Получится вот что:


Таким же образом мы можем добавить к имени файла дату (кнопка Дата), время (кнопка Время)), отделив для собственного удобства их каким-нибудь символом, например, тире.

Особое внимание стоит уделить расширенным возможностям, а именно добавлению к имени файла множества других параметров, выбрав нужные из выпадающего меню при нажатии на кнопку «[=?] Плагин».


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


Выше были рассмотрены самые простые варианты. Можно организовать поиск файлов по регулярному выражению. Для этого в области «Поиск и замена» ставим галочку «Рег. выраж.», в поле «Найти» пишем нашу регулярку, а поле «Заменить на:» пишем, на что все найденное будем заменять. В моем примере участвует простейшая регулярка \d, которая ищет в названии файла цифры и заменяет их на букву а. Заметьте, что файл, который назвается test.JPG в процессе замены не участвует, так как в его названии цифр нет!


Плюсы данного решения:

Минусы данного решения:

Рассмотрим парочку их таких альтернатив.

Среди бесплатных альтернатив Total Commander хочется выделить . Все выше описанное в нем прекрасное делается, начиная от простой замены расширения, заканчивая поиском файла по названию при помощи регулярного выражения. При этом, если Вы знакомы с Total Commander, или хотя бы руководствуетесь приведенными в данной статье скриншотами, то Вы заметите, что интерфейс программы очень похож и понятен. Кстати, он русифицирован, что для многих немало важно. Да, у него, конечно, по отношению к «большому брату» функционал урезан, например, нельзя рассчитать контрольную сумму файла CRC32, а также нельзя синхронизировать каталоги, можно только сравнить. Зато сохранен функционал добавления комментария к файлу по Ctrl + Z. Поиск файлов возможен не только по имени, дате создания, но и по содержимому. Правда, после того, как файл нашелся, его можно только отредактировать, по двойному щелчку он не открывается, что странно… Можно найти файл по сети, используя диск под названием \\ в верхней части программы или щелкнув по пункту меню «Открыть список VFS». Особенно хотелось бы выделить наличие собственного встроенного тестового редактора с возможностью выбора кодировки и даже подсветкой синтаксиса!

Есть похожий функционал у программы , она также русифицирована. Ее интерфейс совсем не такой скучный, как у предыдущих двух программ, смена наименования файла у нее также очень похожа на то, что представлено в предыдущих двух программах. Однако, поиск по регулярному выражению подкачал. Но, думаю, это не самый попсовый функционал и у Total Commander . Присутствует возможность синхронизации папок и их сравнения. Здесь у программы явное преимущество. В программе предусмотрена возможность подключения сетевого диска. Вообще, судя по пункту меню Инструменты -> Переназначить Win + E для FreeCommander, программа весьма амбициозна . Не умеет считать контрольные суммы, за исключением MD5, не знает, что такое комментарий к файлу. По нажатию по F4 открывает редактор, заданный в системе по умолчанию, то есть своего встроенного у нее нет. Поиск также осуществляется как по свойствам файла, так и по содержимому, причем, по двойному щелчку файл открывается в стандартной для него программе, заданной в системе. Это несомненный плюс!

P.S. В программе FreeCommander есть такой пункт меню Файл -> «Уничтожить»… Когда я на него посмотрела краем глаза, подумала, что, судя по значку, это печать, что как-то странно О_о. Посмотрела на сочетание клавиш Shift + Ctrl + Del, видимо, действительно уничтожение… А-а-а, это не принтер, а шредер! Вот оно что =)

Так что думайте, решайте, иметь Total Commander или не иметь!

Подпишитесь на обновления блога!

Благодарю! Вы успешно подписались на новые материалы блога!

Доброго вам времени суток, мои дорогие друзья. Ну как подходит подготовка к Новому году? Я пока еще не всё успел. Ну да ладно. Сегодня не об этом. Помнится мне, как я накачал много разных картинок из интернета под одну тематику. Были самые обычные картинки, но названия у них были что-то вроде «xuj67hsbs6o9.jpg». В принципе в большинстве случаев мне все равно, как эти файлы называются, но если мне приходится с ними работать, то мне лучше, чтобы у каждого файла было нормальное запоминающееся название, иначе уходило бы больше времении всю работу.

А вы знаете какой объем файлов иногда приходится перелопачивать? 100-200-300 файлов. А у всех них название как из задницы. Поэтому проще их переименовать за несколько секунд и радоваться жизни, а то живешь как в бардаке.

В общем давайте посмотрим как переименовать сразу много файлов несколькими способами, благодаря которым переименование займет не более парочке секундю

Средства windows

Здесь я хотел бы отметить самый простой и самый малофункциональный способ группового переименования файлов. Но плю состоит в том, что не надо устанавливать никаких доплнительных программ, а наши задачи он вполне решает.


Total Commander

Кроме стандартного переименования, вы можете воспользоваться популярной программулинкой, которая называется Total Commander. Может кто-то помнит такую старую среду Norton Commander, которая у нас в стране использовалась еще до внедрения windows? Да такая оболочка с директориями и файлами, разделенная на два участка. Блин, аж ностальгия взяла. Я еще в 1990—1993 годах любил к отцу на работу ходить в компьютер играть, и как раз приходилось все делать через Norton Commander...Блин, надо меня останавливать, а то сейчас в детство уйду.

Так вот, для Windows есть похожая среда, но только уже сделанная под современный интерфейс — Total commander. И кстати в нем таки довольно удобно работать, кроме того он имеет ряд полезных функций Но я вас работе с ней сегодня учить не буду, так как этому надо посвятить отдельную тему. Но есть один нюанс. Она платная. Зато вам дается месяц, чтобы поработать в ней бесплатно.

Сегодня мы ее будем использовать для массового переименования файлов.

  1. Скачайте ее, например отсюда и установите. Установка совершенно стандартная и простая. Только скачивайте версию для вашей разрядности системы. Какая у вас — 32 или 64? Посмотреть эту информацию вы можете, нажав правой кнопкой на значок «компьютер» и выбрав «Свойства».
  2. Зайдите в программу и вы увидите интерфейс, разделенный на два окна. Найдите вашу папку, где находятся все те файлики, которым не помешало бы сменить имя.
  3. Теперь выделите все файлы. Это можно сделать с помощью знакомой нам комбинации CTRL+A, либо в главном меню сверху выберете пункт «Выделение», а затем «Выделить всё». Как видите, все ваши файлы в папке выделились красным цветом. Если у вас так, то молодцы. А если не получилось, то попробуйте еще раз. Бывает всякое.
  4. Теперь найдите в главном меню «Файлы» и из раскрывающегося списка выберете «Групповое переименование», либо нажмите комбинацию клавиш «CTRL+M».
  5. Теперь перед вами открылось окно группового переименования. Страшно? Не надо. Ничего страшного тут нет. Здесь вам предлагается посмотреть и выбрать, по какому принципу переименовывать файлы. Например вы можете выбрать по дате, тогда каждый файл будет переименован в соответствии с датой изменения. Но я такое не люблю. Лучше всего использовать «Счетчик». В этом режиме файлы будут переименовываться начиная с одного и по порядку. Но это по умолчанию. И кстати не забудьте, если вы хотите, чтобы перед счетчиком стояло определенное слово (например фото), то вам надо вписать его в «маску».
  6. А если вы хотите задать что-то своё, то вам нужно обратить на параметры, которые находятся в правом верхнем углу окна программы. По умолчанию всё стоит по «1» . Т.е. первый файл переименуется в 1 , а дальше по порядку — 2, 3, 4 ,... Но мы можем поставить не только цифры, но и буквы, как символы отсчета (Правда только латинские). Для этого измените «Начать с...» на «a» (латинскую). Тогда следующий файл будет называться b , а далее следующий c , ну вы поняли. Также вы можете изменить шаг переименования. По умолчанию стоит 1 , т.е. следующие буквы и цифры будут идти по алфавиту. Но если поставить шаг — 2 , то они уже пойдут на 1,2,3 или a,b,c , а будут уже как 1,3,5 или a,c,e . Вы поняли? Одна буква или циферка будет тупо пропускаться.
  7. В общем тут вы можете сами посмотреть все параметры. Разобраться легко. Но когда вы всё для себя настроите, не забудьте нажать кнопку «Выполнить». После всех этих манипуляцию файлы за секунду переименуются и примут желанный для вас вид.

Ну вот и всё, что я вам хотел поведать в сегодняшней статье. Есть конечно еще множество хороших программ для переименования, например Renamer. Я им даже иногда пользовался (правда там немного другая ситуация была). А так в общем-то этих двух способов должно хватить с головой.

Ну а если вам так часто приходится работать с файлами, или же у вас просто очень много важной информации, то я хотел бы предложить вам посмотреть превосходный видеокурс по защите файлов от разных обстоятельств (Вирусы, удаление, порча, неисправность жесткого диска, хищение и т.д.). Описаны реальные и отличные способы резервного копирования и защиты данных. Причем все уроки в видеоформатах и рассказаны человеческим языком, а не техническим, что делает этот курс просто великолепным.

Ну а на сегодня я свою статью заканчиваю. Надеюсь, что информация была для вас полезной. Спасибо, что посетили мой блог. И, конечно же я рекомендую вам подписаться на обновления моего блога, тогда вы точно не пропустите ничего интересного. Увидимся в других статьях. Пока-пока!

С уважением, Дмитрий Костин

Get-ChildItem -Path $env:userprofile\Downloads -Filter "*.zip*" -Recurse |`

знак «`» не обязательно ставить, т.к. PowerShell после | будет искать продолжение строки.

Vadimio Vadim

В последний раз решал задачу посылки любого sms сообщения через usb gsm «свисток». Причем скрипт работает как в оконном режиме(PowerGUI помог), так и в консольном.

Alexiz Kadev

Завидую (по хорошему) Вашей памяти, Вадим. Мне вот никак не удается весь этот «язык пляшущих человечков» запоминить. Это я относительно Вашей фразы про то, как PoSH может помочь в случае если Total поставить нельзя. Мне в этом случае поможет либо многочасовое чтение манов либо (если вдруг на таком ПК окажется инет) гугление.

Кто-нибудь объяснит, зачем переименовывать 20000 файлов? Такое бывает вообще? Приведите примеры.
А сколько файлов можно переименовать в проводнике? Хотя опять напрашивается вопрос — Зачем. Разве в Проводнике недостаточно инструментов для управления файлами?

  • Ок, пусть 20 файлов — как решать будете обе задачи в проводнике?

    • Последнее из того, что могу вспомнить - сортировка файлов, извлечённых по сигнатурам из образа диска с убитой файловой системой. Была написана программа (на C++), которая посекторно сканирует файл образа диска (дамп, полученный программой dd, которая есть и для Windows) и при обнаружении известной сигнатуры начинает выписывать новый файл. Имена полученных файлов в большинстве случаев имеют вид: «XXXX YYYYYYY.rar», где XXXX - порядковый номер файла, YYYYYY - номер сектора, с которого файл начинается на диске.

      Для сортировки файлов были написаны адские батники, которые могли:
      - Устранять копии. В первой версии файлы сравнивались каждый с каждым при помощи утилиты fc /b (fc умеет устанавливать errorlevel), но этот алгоритм имеет квадратичную сложность (время O(N²)), поэтому для больших наборов он уже не подходил. Стал перемещать файлы в каталог с именем из хеш-кода (вычисленного утилитой fciv.exe). Затем другой скрипт обходил подпапки и сохранял только самый первый файл из каждой из них (остальные удалял).
      - Добавлять примерную дату создания к имени каждого архива. Архив извлекался во временную папку с восстановлением точного времени всех временных штампов (winrar x -ts arc.rar temp\), циклом for /r перебирались все файлы и выбиралась самая поздняя дата модификации.
      - Сортировать архивы по содержимому. Утилитой rar.exe извлекался листинг каждого архива, команда find определяла наличие ключевого слова (она тоже устанавливает errorlevel в зависимости от результата), при успешном обнаружении архив перемещался в соответствующую подпапку.

      О существовании средства массового переименования файлов в Far Manager’е я ничего не знаю, возможно есть соответствующие плагины, искать не пробовал.

      В некоторых простых случаях для массового переименования/копирования файлов в Far я сначала создавал список файлов в новом текстовом файле:
      dir /b *.abc > rename.bat
      Затем правил rename.bat встроенным редактором, как правило, записывая макрокоманду. Потом нажимал горячую клавишу макрокоманды (как правило, Ctrl+Alt+↓) для каждой строчки в файле.
      Либо просто записывал макрокоманду, которая в командной строке Far’а формирует команду переименования файла под курсором, тут же её выполняет (нажимает Enter) и переходит к следующему файлу (нажимает ↓). И опять давил на горячую клавишу десяток-другой раз.

      Возвращаясь к cmd.exe. Мне кажется, я слишком хорошо знаю обычную командную строку, чтобы заставить себя начать изучать PowerShell. Нумерация файлов в текущем каталоге:

      Set N=1 for %%j in (%1) do call:RENAME "%%j" exit:RENAME set SUF=000%N% ren "%~1" "%~n1-%SUF:~-3%%~x1" set /a N=N+1 goto:EOF

      Добавление текущей даты будет отличаться использованием %DATE% вместо %SUF:~-3% в процедуре RENAME. Недостаток по сравнению с однострочником PowerShell - нужно создавать файл. И я тоже не помню наизусть все ключи команд set и for, но их всегда можно посмотреть командами set /? и for /?.

      Под Линуксом ту же задачу я бы выполнил однострочником:

      Ls *.jpg | awk " BEGIN { n = 0 } { gsub(".jpg$", ""); system(sprintf("mv %s.jpg %s-%d.jpg", $0, $0, n)); ++n; }"

      На Perl было бы короче, но Perl я не знаю, а awk знаю хорошо.

      • Александр [Маздайщик] : Мне кажется, я слишком хорошо знаю обычную командную строку, чтобы заставить себя начать изучать PowerShell.

        А я — нет. Мне взрывают мозг конструкции вида

        Ren "%~1" "%~n1-%SUF:~-3%%~x1"

        И я не могу себя заставить выучить FOR, чтобы свободно лепить такое.

        Александр [Маздайщик] : Добавление текущей даты будет отличаться использованием %DATE% вместо %SUF:~-3%

        Угу, только вывод %DATE% отформатировать нужно, и в PowerShell это делается на порядок проще в плане понимания происходящего.

        strafer

        Более универсальный вариант на awk’е под любое расширение

        если имя файла может содержать несколько частей, разделённых точками:

        Ls *.jpg | awk -F . "{ printf("%s %s%03d.%s\n", $0, substr($0, 0, length($0)-length($NF)-1), NR, $NF) }" | xargs -L1 mv

        если уверены, что точка будет только перед расширением:

        Ls *.jpg | awk -F . "{ printf("%s %s%03d.%s\n", $0, $1, NR, $2) }" | xargs -L1 mv

        ЗЫ. Кстати сказать, вы в строке формата sprintf забыли указать размер поля вывода под число, будет 1, 2, … вместо нужного 001, 002, …

        • Lecron

          Кстати, размер поля вывода указанный вручную, не намного меньший недостаток, чем его отсутствие. Зачем 3 знака для единиц файлов и что будет если файлов окажется больше 999?

          • strafer

            Перед тем, как выполнять задание, надо его уяснить. В условиях задачи недвусмысленно сказано

            Допустим, надо добавить счетчик из трех цифр в конце имени всех файлов JPG в текущей папке.

            Я не слишком силён в финтах питона, ваш код ниже это условие учитывает?

            Говоря безотносительно к задаче в статье, в общем случае ничего не мешает сперва посчитать количество файлов, например

            Ls *.jpg | wc -l

            А потом принять решение о выходном формате имён файлов.

            и что будет если файлов окажется больше 999?

            Конкретно в случае awk’а он будет шлёпать числа дальше, т.е. 1000, 1001, …

            • Lecron

              Просто я рассматривал задачу не как практикум по программированию, а как решение практической задачи. И если не изменяет память, wc -l выведет количество файлов, а не размер поля. Тогда уж

              Ls *.jpg | wc -l | wc -m

              А в целом, считаю использование таких однострочников неэффективным. Это касается и PowerShell, и других шелов.
              Для редкого использования, нужно ОЧЕНЬ хорошо знать командный синтаксис. А для регулярного, с поднятием из истории, попросту небезопасно. Так как нужно считывать/интерпретировать весь текст кода, найти и ввести параметры в разных его местах . Причем заранее произвести некоторые действия, например узнать количество файлов для переименования. Малейшая невнимательность, автоматизм действий и здрасьте проблемы.
              И в первом, и во втором случае, лучше использовать скрипты/программы, с понятной системой ключей.

              Мой скрипт тоже не учитывает. Но там параметры по крайней мере задаются в одном месте, в самом начале. При желании, можно написать

              Ext = ".jpg" digit = len(str(sum(1 for f in listdir() if f.endswith(ext))))

              Тоже не бог весть как красиво, но для скрипта это уже не важно.

              strafer

              а как решение практической задачи

              Практическая задача - добавить трёхзначный номер в имя файла.

              И если не изменяет память, wc -l выведет количество файлов

              Совершенно верно, но если лень глазами посчитать количество разрядов в выведенном числе - посчитайте их wc -m, ради бога:-) (только не стоит забывать, что он ещё и символ перевода строки засчитает и выдаст на один разряд больше, чем реально есть в числе)

              Для редкого использования, нужно ОЧЕНЬ хорошо знать командный синтаксис.

              Знать надо не хуже, чем нужно знать какой-либо ЯП, например питон, для программирования на нём. Если такие задачи приходится решать в консоли часто, то синтаксис запоминается довольно быстро. К тому же, в случае регулярных выражений, они следуют практически одной логике, нужно только помнить о мелких различиях в конкретной реализации. Т.е. понимая их в принципе, можно ваять и в sed, и в grep, и в awk.

              А для регулярного, с поднятием из истории, попросту небезопасно.

              Если «регулярно» - это раз в год, то не вижу смысла писать отдельный скрипт для такой задачи, отлично сгодится поднимать из истории этот. Если раз в неделю - то конечно стоит написать, и кстати не факт, что bash-скрипт будет хуже питоновского (по крайней мере интерпретировать его можно будет вероятно на любом линуксе в мире, кроме самых кастрированных).

              Малейшая невнимательность, автоматизм действий и здрасьте проблемы.

              Возможно вы не обратили внимания, я себе соломку подстелил: если удалить непосредственно исполняющую задачу команду (в данном случае mv), то xarg просто выведет аргументы без какого-либо изменения на диске. Хорошо как для отладки, так и для уверенности в том, что однострочник двухгодичной давности делает именно то, в чём ты его подозреваешь:)

              ЗЫ. Если что, чтоб не было недопонимания, я скриптов не против, я сам их понаписал уже порядочно. Но однострочники вполне православны для мелких поручений.

              Lecron

              Все так. Я не предлагаю язык, я именно про скрипт.
              Хочу еще добавить, что задача редко остается неизменной. Наоборот, обычно расширяется. А в скриптах проще добавлять новый функционал и рефакторить код.
              Даже обсуждаемый однострочник лучше будет выглядеть как
              massRename *.jpg —counter -l3 (или -lauto)

              strafer

              Вы, видимо, программистом работаете, ну или в порядке крепкого хобби кодите, я угадал? В таком случае вы, видимо, просто психологически чувствуете себя лучше, когда код в файле, и стремитесь к этому в любом случае:-)

              Я больше админю и поэтому не упираю на это. Либо сразу в начале решения, либо по ходу использования становится понятно, что скрипт нужен будет часто. В таком случае я его превращаю в собственно скрипт в файле и облагораживаю параметрами и проверками.
              А если нечасто или вообще больше никогда - так я про него и не вспомню.

              Даже обсуждаемый однострочник лучше будет выглядеть как
              massRename *.jpg -counter -l3 (или -lauto)

              Это профанация, т.к. это не однострочник, а вызов скрипта, который ещё нужно написать самому. Суть однострочника - в использовании короткой комбинации относительно стандартных утилит.

              Писать в отдельный файл однострочный код, который возможно никогда не понадобится - это совсем уж чересчур, ему самое место в файле истории шелла.

    • Lecron

      Для пакетного переименования использую FAR с плугином NameEditor от Артёма Сеничева.

      Считаю PS пригодным для системного скриптинга. Для прикладного, к которому относится и данная задача, предпочту использовать Python. Да, это не будет однострочником, но применимость языка настолько выше, что его все равно выгодно учить, а на известном языке написать что угодно уже не проблема. Вдобавок, по моему мнению, он начнет заметно выигрывать, в случае разрастания функционала.

      From os import listdir from shutil import move cnt = 1 digit = 2 for f in listdir(): if f.endswith(".mp3"): move(f, "{:0>{digit}}.mp3".format(cnt, digit = digit)) cnt += 1

      strafer

      По ходу обсуждения в ВК выяснилось, что пример с датой надуманный, а более реальной выглядит последовательная нумерация файлов.

      Сдаётся мне, что он тоже какой-то надуманный:)

      По самому однострочнику: на мой взгляд более элегантно делать наиболее универсальные скрипты, в этом смысле стоило бы расширение сделать динамическим, тогда ему при изменении начальной команды можно кормить любые файлы, а не только жпеги.
      Впрочем, если виндовая консоль всё ещё не умеет в историю команд, так наверное и пофигу.»

      Vadim Sterkin : А что, в Линуксе есть история команд? Нет, правда? Не может быть…

      Вот тут сарказма не понял. Конечно она есть, и ещё какая.

  • artem

    я просто оставлю это здесь

    пример правда какой-то надуманный, но я понимаю, что это не ты. Я вот как-то решал такую задачу сходной упоротости. Есть много архивов Zip. Надо распаковать их всех каждый в свою папку. При этом через какое-то время могут появиться новые зипы, надо будет ещё раз запустить скрипт. При этом чтобы старые он распаковать уже не пытался. (Т.к. уже есть распакованные папки, ничего хорошего из этого не выйдет).

    Поскольку мне смотреть на эти зипы вообще не интересно, особенно после того, как они уже распакованы, я придумал такую штуку. После распаковки файлу ставится атрибут «скрытый», а при поиске файлов для распаковки скрытые файлы игнорируются. Так я из в общем-то тривиальной задачи сделал заковыристую.

    При работе часто встречаются ситуации, когда необходимо переименовать сразу большое количество файлов. В частности, такая потребность возникает при упорядочивании своей коллекции фотографий, домашнего видео и др. Для этой цели существуют специализированные программные инструменты, о которых мы и поговорим ниже.

    С базовыми операциями по переименованию групп файлов вполне может справиться обычный Проводник Windows. Выделяем группу файлов и на вкладке «Главная» жмем «Переименовать». Вводим новое имя, жмем «Enter». В результате мы получим файлы-«тезки» с разными порядковыми номерами.

    Total Commander

    Этот файловый менеджер вполне заслуживает своих высоких оценок у пользователей. Он также поддерживает массовое переименование, и имеет широкий набор возможностей, которые можно еще увеличить с помощью плагинов.

    Advanced Renamer

    Приложение вполне оправдывает свое название. В нем вы можете переименовать сразу несколько файлов или папок с помощью различных способов. Поддерживается также пакетное переименование.

    Siren

    Программа Siren выполнит переименование согласно заданного пользовательского шаблона. Сам процесс создания шаблонов может вызвать вопросы у пользователей, но соответствующий мастер поможет с этим.

    Bulk Rename Utility

    Данная программа имеет достаточно сложный и к тому же англоязычный интерфейс, но она обладает огромным набором опций для массового переименования файлов. С ее помощью вы можете включить в названия дату и время, вставить текст, автонумерацию и т.д.

    Rename Master

    Утилита Rename Master умеет переименовывать группы файлов по множеству критериев, таких как MP3-тэги, EXIF-тэги в JPG-файлах и т.д. Программа имеет удобный, правда только англоязычный интерфейс и может работать в portable-версии.