Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Проблема с массовым переименованием вложенных папок
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
bbutcher



Joined: 25 Dec 2013
Posts: 13

Post (Separately) Posted: Tue Dec 24, 2024 13:58    Post subject: Проблема с массовым переименованием вложенных папок Reply with quote

У знакомой возникла проблема при восстановлении данных на диске. Все русские имена файлов и каталогов были восстановлены с неверной кодировкой.

Я нашёл такое решение:

1. Вошёл в папку с восстановленными данными. Нажал Ctrl+B, выделил всё и скопировал имена всех файлов с путями.

2. Сохранил в текстовый файл, открыл его в редакторе и пересохранил с исправленной кодировкой.

3. Затем с выделеными по Ctrl+B файлами и папками, вызвал пакетное переименование и там выбрал загрузить имена из файла.

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

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

Есть ли возможность как-то сказать Тоталу, что вначале надо переименовывать файлы, а только потом папки? Или надо писать Гислеру просить опцию «Вначале обрабатывать файлы»?


Last edited by bbutcher on Tue Dec 24, 2024 23:12; edited 1 time in total
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10411
Location: Россия, Саратов

Post (Separately) Posted: Tue Dec 24, 2024 14:37    Post subject: Reply with quote

bbutcher
Никакого "а потом папки" нет и не предвидится. Тем более, что при переименовании разноуровневых папок вы и без всяких файлов столкнётесь с той же самой проблемой. Видимо, надо было скачала исправлять и загружать только имена файлов, не меняя пути, а потом уже думать, что делать с папками (и в последнем случае не исключено, что "много-много раз"). Возможно, кто-то предложит более эффективное решение, я сейчас несколько ограничен временем.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2686

Post (Separately) Posted: Tue Dec 24, 2024 15:59    Post subject: Reply with quote

Avada wrote:
"много-много раз"

Наверное, это число определяется количеством уровней вложенности подкаталогов в рассматриваемой структуре папок.
Подкаталоги на одном уровне можно искать, используя вкладку "Плагины", с помощью wdx-плагина Filex, поле Глубина вложенности (DepthLevel).
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 738

Post (Separately) Posted: Tue Dec 24, 2024 18:49    Post subject: Reply with quote

bbutcher
Попробуйте плагин Wdx translit. Там доступны три варианта для перевода в ANSI из других кодировок:
Code:
UTF8_WIN1251.ttb
KOI8_WIN1251.ttb
DOS866_WIN1251.ttb

http://progman13.wincmd.ru/downloads/wdx_Translit_2.0.4.zip
Если у вас что-то более специфичное, почитайте этот пост и последние сообщения темы:
http://forum.wincmd.ru/viewpost.php?p=133082
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10411
Location: Россия, Саратов

Post (Separately) Posted: Tue Dec 24, 2024 21:54    Post subject: Reply with quote

Orion9
Я не уверен, что вы поняли проблему. Как этот плагин помогает разобраться с многоуровневой структурой, мигающей довести переименование до конца? ИМХО, ровно никак. Вопрос был не в том, чем лучше поменять кодировку (тут ничьего совета вообще не спрашивали), а в том, как полностью применить изменения.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
bbutcher



Joined: 25 Dec 2013
Posts: 13

Post (Separately) Posted: Tue Dec 24, 2024 23:11    Post subject: Reply with quote

Avada wrote:
bbutcher
Тем более, что при переименовании разноуровневых папок вы и без всяких файлов столкнётесь с той же самой проблемой.


Да, вы правы! Галочка "Сначала обрабатывать файлы" ничего бы не решила бы. Обработать файлы, действительно, можно, а со структурой папок проблема остаётся.

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

Была идея, что можно сделать список для переименования через командную строку: "dir -какие-нибуь_опции > list.txt", но, похоже, что опций сортировать пути от самого дальнего к наиболее близкому к корню, там тоже нет.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 738

Post (Separately) Posted: Wed Dec 25, 2024 00:21    Post subject: Reply with quote

Avada wrote:
Я не уверен, что вы поняли проблему.

Ну, отрицать не стану, что я не до конца об этом подумал Smile

И все же...
Avada wrote:
Как этот плагин помогает разобраться с многоуровневой структурой, мигающей довести переименование до конца?

Работа с плагином намного удобнее, чем со списком. Достаточно один раз переименовать по Ctrl+M и в следующий раз Total будет открывать окно группового переименования с тем же шаблоном. Останется только найти каталоги с одинаковым уровнем вложения и вручную повторить те же действия, как и предлогал sa. Потому что по-другому:
Avada wrote:
Вопрос был не в том, чем лучше поменять кодировку (тут ничьего совета вообще не спрашивали), а в том, как полностью применить изменения.

Не получится.

Добавлено спустя 8 минут:

Quote:
Галочка "Сначала обрабатывать файлы" ничего бы не решила бы.

Как это не решила бы? Вы же сами писали:
Quote:
Есть ли возможность как-то сказать Тоталу, что вначале надо переименовывать файлы, а только потом папки?

Найдите все файлы и переименуйте сначала их. Так, по крайней мере, у вас хотя бы все файлы будут в нормальной кодировке. А потом каталоги отдельно по уровням, как писалось выше, от нижнего уровня к верхнему, а как по-другому?

Добавлено спустя 10 минут:

P.S. Думаю, что каталоги можно будет и от верхнего уровня к нижнему переименовывать без проблем, но только поэтапно, а не за один раз.
Back to top
View user's profile Send private message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 323

Post (Separately) Posted: Wed Dec 25, 2024 01:54    Post subject: Reply with quote

Я бы в текстовом файле сделал бы сортировку по длине строки от большего к меньшему, ведь явно файлы в поддиректориях будут длиннее своих родительских папок. Это можно сделать, прогнав через тот же эксель. И этот список скормить уже тоталу для переименования. В начале будут обрабатываться файлы в длинных путях, а потом папки (вперемешку с файлами в короткими путями), но коллизий не должно быть.
Еще как вариант, если у папок в конце слеш стоит, то также через эксель сделать сортировку в начале по длине строки, а потом так, чтобы все папки очутились внизу списка. И также скормить тоталу.
Back to top
View user's profile Send private message
YuraS



Joined: 25 Dec 2024
Posts: 2

Post (Separately) Posted: Wed Dec 25, 2024 12:50    Post subject: Reply with quote

Вариант решения:
1. Вошёл в папку с восстановленными данными. Нажал Ctrl+B, выделил всё и скопировал имена всех файлов с путями.
2. Сохранил в текстовый файл, открыл его в редакторе и пересохранил с исправленной кодировкой.
3. Удалить у всех записей в файле путь к папке восстановленными данными и ее имя.
4. Перенести (если место позволяет, скопировать) все файлы в корень папки с восстановленными данными без сохранения структуры и автоматически переименовав файлы с одинаковыми именами.
5. Удалить пустую структуру испорченных папок (или, если копировали файлы, поместить все каталоги в резервный каталог)
6. Переименовать файлы используя список

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


Last edited by YuraS on Wed Dec 25, 2024 17:33; edited 3 times in total
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10411
Location: Россия, Саратов

Post (Separately) Posted: Wed Dec 25, 2024 13:22    Post subject: Reply with quote

YuraS
Это не решение. Как переименовать файлы без папок, достаточно понятно и так, причём без всяких их переносов и удалений путей. Вопрос состоит в том, как восстановить испорченные имена папок, а не в том, как их убрать и свалить все файлы в одни месnо (причём далеко не факт, что среди них нет одноимённых). Неужели из предыдущих сообщений до такой степени непонятно, что на самом деле нужно?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 738

Post (Separately) Posted: Wed Dec 25, 2024 14:21    Post subject: Reply with quote

Имхо, зачем заморачиваться со списками, когда есть плагин?

Monarch-LFV, вы же работали с этим плагином в схожей ситуации, пусть и не в таком промышленном масштабе, зачем усложнять все экселем?

Как уже писалось и Avada , и самим автором, сначала лучше всего разобраться с файлами.

Шаблон поиска: tc.directory = 0

Находятся все файлы, загружаются в групповое переименование и сохраняются нужным шаблоном, например [=wdx_translit.(USR) UTF8_WIN1251]

Шаг 2, как и писал sa, плагином FileX нужно пройти всю глубину вложенности (я не думаю, что там больше 5-7 уровней, а значит делать нужно будет всего 5-7 раз).

Шаблон поиска: tc.directory = 1 & filex.DepthLevel = 2

Где DepthLevel - начальный уровень папки, в которой хранятся восстановленные данные.

Поиск, загрузка, переименование. Далее - повторение для следующих уровней:
tc.directory = 1 & filex.DepthLevel = 3
tc.directory = 1 & filex.DepthLevel = 4
И т.д.

Придется немного поработать руками, а как иначе? Но зато и предварительные рузультаты переименования в окне группового переименования будут видны.
Back to top
View user's profile Send private message
bbutcher



Joined: 25 Dec 2013
Posts: 13

Post (Separately) Posted: Wed Dec 25, 2024 14:26    Post subject: Reply with quote

Monarch-LFV wrote:
Я бы в текстовом файле сделал бы сортировку.


Сортировка строк, увы, не поможет.

Дело в том, что порядок строк в файле, указывающем во что надо переименовать, должен полностью соответствовать порядку файлов, которые мы переименовываем, а возможности как-то повлиять на этот порядок файлов на входе сильно ограничены.
Back to top
View user's profile Send private message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 323

Post (Separately) Posted: Wed Dec 25, 2024 14:34    Post subject: Reply with quote

bbutcher
А зачем их заранее переименовывать, если есть упомянутый выше плагин WDX_Translit? Это первый способ.
Второй способ: можно в экселе фильтрами все сделать (если конечно умеете пользоваться). Колонка "до" (с кракозябрами), колонка "после" (ваш переименованный вариант), колонка с порядковыми номерами (на вский случай), колонка с формулами "=ДЛСТР(A1)", по которой в последствии и будете сортировать, с фильтрами сортируются соответствующие строки, а значит 100%-ное соответствие.
Третий способ: Можно действительно по Ctrl+B найти все файлы, и с помощью плагина Translit переименовать. Вторым шагом обычным поиском найти все папки (с вкладкой плагином TC) и переименовать также их.
При желании еще много способов можно придумать.


Last edited by Monarch-LFV on Wed Dec 25, 2024 15:18; edited 1 time in total
Back to top
View user's profile Send private message
bbutcher



Joined: 25 Dec 2013
Posts: 13

Post (Separately) Posted: Wed Dec 25, 2024 14:47    Post subject: Reply with quote

Спасибо большое! C wdx_translit и Filex никогда ещё не работал. Буду разбираться!
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10411
Location: Россия, Саратов

Post (Separately) Posted: Wed Dec 25, 2024 14:54    Post subject: Reply with quote

Monarch-LFV
Четвёртый способ — поиск с исключением каталогов по атрибутам.
А как топик-стартер намерен исправлять кодировку — это вообще-то его проблема, поскольку данный вопрос на форум не выносился и, вполне возможно, решён сразу же, не требуя больше ничьих советов. Тем более, что мы ничего не знаем о том, что и как там было на самом деле испорчено и каким образом восстанавливалось.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group