Страница 1 из 1

Умное переименование

Добавлено: Пт май 07, 2010 11:27
Cr00t
Здравствуйте, гуру TC!
Передо мной встала, буквально, непосильная задача

Есть куча папок с подпапками, вида:

c:\dir\dir\Cat1\Cat2
c:\dir\dir\Cat2\Cat2
c:\dir\dir\Cat3\Cat2
c:\dir\dir\Cat4\Cat2
c:\dir\dir\Cat5\Cat2
c:\dir\dir\Cat6\Cat2
c:\dir\dir\Cat7\Cat2
c:\dir\dir\Cat8\Cat2

А нужно переименовать в

c:\dir\dir\Cat1 - Cat2
c:\dir\dir\Cat2 - Cat2
c:\dir\dir\Cat3 - Cat2
c:\dir\dir\Cat4 - Cat2
c:\dir\dir\Cat5 - Cat2
c:\dir\dir\Cat6 - Cat2
c:\dir\dir\Cat7 - Cat2
c:\dir\dir\Cat8 - Cat2

Есть ли такие возможности? Не нашел пока программы.. А таких папок с сотни 2 - 3 уж точно(

Добавлено: Пт май 07, 2010 13:32
MVV
Прямой возможности переименования с изменением структуры папок нет, но можно извратиться и применить мультипереименователь не по назначению:

1. Alt+F7 в папке C:\dir\dir, ищешь папки для переименования (если имена одинаковые, это несложно - в твоем примере это будет просто имя "Cat."), файлы на панель.
2. Выделяешь, открываешь мультипереименователь (Ctrl+M).
3. Шаблон имени: move ^%[P]^$[N]^% ^%[P] - [N]^%
Шаблон расширения: [E]
Заменить что: ^$|^%
Заменить на: \|"
Regex: нет
4. Жмешь кнопочку справа от комбобокса выбора регистра имен с изображением какой-то папочки, там выбираешь редактирование имен. Сохраняешь открывшийся файл в папке C:\dir\dir с расширением BAT, закрываешь редактор и окно мультипереименователя (переименовывать ниче не надо!).
5. Запускаешь созданный BAT-файл.

Полученный BAT-файл будет содержать строки с командами вида:
move "Cat1\Cat" "Cat1 - Cat"
Такая команда переименовывает/перемещает папку "Cat1\Cat" в "Cat1 - Cat" в текущей папке (поэтому важно, чтобы BAT-файл запускался именно из папки, где лежит папка "Cat1").


Кстати, раз папка назначения существует (папки перемещаются на уровень вверх), то можно использовать мультипереименователь и по назначению - это проще, и будет работать, так как папки создавать тут не надо:

1. Такой же.
2. Такой же.
3. Шаблон имени: [P] - [N]
Шаблон расширения: [E]
Заменить что: ^
Заменить на: ..\\
Regex: да
4. Начать!

Обработчик регулярных выражений допишет в начале каждого имени "..\", что означает, что папка должна быть перемещена на уровень вверх.


В любом случае, первый алгоритм - это намек на оригинальную идею, которая может помочь в более широком количестве случаев. Например, если папку назначения нужно еще и создавать, можно формировать следующую команду:
md dest_folder && move source dest_folder\destination

Удалять пустые папки потом придется вручную.

Добавлено: Пт май 07, 2010 17:10
cluster
MVV
По-моему, это надо поместить на http://www.tckb.ru, если там ещё такого нет. Очень полезное дополнение.

Добавлено: Пт май 07, 2010 22:32
Вахмурка
Мой скрипт выполняет примерно то же, но с файлами. Его можно доработать, чтобы он годился и для директорий. И я непременно сделаю это, как только у меня самого возникнет такая нужна. Впрочем, сказанное нисколько не умаляет достоинства решения MVV, хотя бы в силу его независимости от внешних утилит.