2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Как поменять местами части имени многих файлов в Виндовс?
Сообщение08.08.2021, 12:37 
Аватара пользователя
Есть файлы определенного формата в определенной папке. Имена примерно такие...

Код:
BLA-BLA-BLA_1-seriya-PLA-PLA-PLA-PLA.mp4
BLA-BLA-BLA_24-seriya-PLA-PLA-PLA.mp4

А мне надо следующее...

Код:
PLA-PLA-PLA-PLA_1-seriya-_BLA-BLA-BLA.mp4
PLA-PLA-PLA_24-seriya-_BLA-BLA-BLA.mp4

Я могу переминировать кучу файлов с помощью программы "Command Prompt", и команды "ren" там, но как поменять местами части имен то?

П. С. Заранее спасибо за ответы!

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение08.08.2021, 15:18 
Если имена более-менее регулярные, то при присвоении командой set в bat/cmd файле переменной нового значения можно заменить подстроку на другую или вырезать из строки несколько символов (вместо %PATH из примеров ниже в командных файлах можно использовать и %1):
set /? писал(а):
Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".


Можно также использовать строки расширения.

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата. Если длина не указана, по умолчанию используется оставшееся
значение переменной. Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.

%PATH:~-10%

извлечет последние 10 символов переменной PATH.

%PATH:~0,-2%

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

А, ну да, чтобы ручками не писать миллион ren разумеется можно использовать for для перебора всех файлов. И внутри цикла обрабатывать строго один файл, без всяких макроподстановок, это надёжнее и проще проверить результат заранее.

PS. Очень рекомендую до полной отладки работы команд вместо ren file1 file2 писать echo ren file1 file2 и внимательно изучать что и как именно будет в итоге переименовываться.

 
 
 
 Bulk Rename Utility
Сообщение08.08.2021, 16:56 
Аватара пользователя
Bulk Rename Utility и подобные.

http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6739

Вам понадобится RegEx (слева поля). Справка там есть.

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение08.08.2021, 17:07 
Если в частях BLA и PLA не встречается символов "-_.", то можно и по другому: побить всё имя на кусочки с разделителями "-_." и потом собрать новое имя из этих кусочков. Здесь не придётся считать длину в символах и корректно обработаются многозначные номера серий.
Пример для переименования первой группы файлов (запускать из командной строки, не из bat/cmd файла): for %z in (BLA-BLA-BLA_*-seriya-PLA-PLA-PLA-PLA.mp4) do @for /f "tokens=1-10 delims=-_." %a in ("%z") do @echo ren %a-%b-%c_%d-%e-%f-%g-%h-%i.%j %f-%g-%h-%i_%d-%e-_%a-%b-%c.%j

-- 08.08.2021, 17:15 --

Пример с подсчётом символов для первой группы файлов для серий 1-9, содержимое t.cmd, с отладочным выводом, реально нужны только команды set (потому что %1 использовать для деления на подстроки оказывается нельзя, был не прав) и ren:
Используется синтаксис Text
@echo off
rem Покажем исходное имя и разбиение его на кусочки
echo %1
set f=%~n1%
echo %f:~0,11%
echo %f:~12,9%
echo %f:~21,15%
echo %~x1%
rem Покажем во что будет переименовано
echo %f:~21,15%_%f:~12,9%_%f:~0,11%%~x1%
rem Покажем полную команду переименования
echo ren %1 %f:~21,15%_%f:~12,9%_%f:~0,11%%~x1%
Запускать из командной строки так: for %p in (BLA-BLA-BLA_?-seriya-PLA-PLA-PLA-PLA.mp4) do t.cmd %p

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение08.08.2021, 23:28 
frostysh в сообщении #1528314 писал(а):
Я могу переминировать кучу файлов с помощью программы "Command Prompt", и команды "ren" там, но как поменять местами части имен то?

Надо получить имена в какие-то строки, и над строками сделать вычисления. Потом переимновать исходные файлы в файлы с вычисленными именами.
По рабоче-крестьянски, без п ратства и всего такого, я лет 20 назад делал так.
Запускаем команду dir и то что она выводит (имена файлов) копипастим в столбец эксель (в вашем случае это будет Calc из состава LibreOffice).
Дальше формулой меняем местами символы, добавляем и т.п., делаем второй столбец с целевым именем.
Ну и дальше делаем команду ren в третьем столбце.
Потом этот третий столбец копипастим в текстовый файл, даем ему расширение .bat и запускаем.
Это если все файлы в одной директории. Если надо рекрусивно по многим, это следующий уровень квеста, пройдите сперва этот.
Ну это я делал до того как нашел подходящую программу. Метод наглядный - вы видите, что получается до того, как переименуете, все под контролем. Если работы такой много, у вас может возникнуть мысль "и почему люди не придумали регулярные выражения". Гоните её, это ещё на месяц вам погружения.
Список файлов в текстовый файл dir.txt делается навроде как вот так: dir /b > dir.txt

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение09.08.2021, 07:01 
Аватара пользователя
wrest в сообщении #1528370 писал(а):
...это я делал до того как нашел подходящую программу. Метод наглядный - вы видите, что получается до того, как переименуете, все под контролем.
В вышерекомендованной программе тоже всё видно до переименования, плюс есть кнопка "всё вернуть" и после переименования (с очевидными ограничениями). В инструкции там есть.

В текстовом редакторе тоже можно. Иной раз действительно так проще (если что-то хитроумное нужно, то можно и макрокоманду написать).

P.S.
wrest в сообщении #1528370 писал(а):
без п ратства
Цитата:
Bulk Rename Utility
The Free File Renaming Utility for Windows.
Bulk Rename Utility: file renaming software for Windows. Bulk Rename Utility is free of charge for personal, private use, at home.
https://www.bulkrenameutility.co.uk/
А ссылка на old-dos -- на старую версию (попроще), которой нет уже на сайте (или не было тогда, не помню, не проверял сейчас).

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение09.08.2021, 14:33 
Аватара пользователя
Dmitriy40, SergeCpp, wrest

К сожалению я не намного выше окрестности ноля в программировании, поэтому с переменными средами и так далее ниче не понял. Куча файлов в одной папке, неудобно названных реально достала, уже не только машина тормозит на них а и я пока что-то найду. Рассортировал файлы с помощью программы "Bulk Rename Utility", правда без "RegEx" команд и так далее, а просто через графический интерфейс в несколько этапов: сначала отделил файлы с двумя цыферками в строке где "seria" от файлов с одной цыферкой там, далее удалил префикс в имени, далее перенес переднюю часть имени в окончание, далее удалил оставшуюся черточку, а далее добавил вот тот префикс что удалял сначала опять в самое окончание. Заняло это все примерно два часа... И вуаля, магия! Не фанат программирования, но если получится надо будет подучить, упрощает управление компьютером однако, в смысле чтобы я делал если бы такой программы не оказалось существующей... Еще раз спасибо!

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение09.08.2021, 14:46 
frostysh в сообщении #1528391 писал(а):
в смысле чтобы я делал если бы такой программы не оказалось существующей...

Руками бы делали, что ж еще. За два часа можно много файлов переименоввать руками в графическом интерфейсе проводника виндовз. Ну или как я написaл вам - сам список сгрузить в файл командой dir а дальше руками :)
Это очень стандартная задача, рутинная, так что программ много и представать себе, что "такой программы не оказалось существующей...", -- довольно трудно.

 
 
 
 Re: Как поменять местами части имени многих файлов в Виндовс?
Сообщение09.08.2021, 21:26 
Аватара пользователя
wrest

Боюсь время затраченное на такое количество файлов в режиме "ручной обработки" (которые из себя представляют глупые азиатские мультики что я собирал много лет) было бы эквивалентно времени затраченого изучению этого, как его, синтаксиса команд в какой-то программе для переименования типа "Microsoft Power Shell", "Command Promt" на уровне достаточном для "потокового переименования" оных файлов, даже больше времени по идеи, и конечно же у вашего покорного слуги бы просто не хватило бы нервной системы на "ручное" переименование, а тут форум как всегда спас! Программа что я запустил для потокового ренейминга действительно хорошо исполняет свою роль!

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group