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 

Single Post  Topic: Поменять Junction на относительные символьные ссылки 
Author Message
HankHank



PostPosted: Thu Jan 27, 2022 16:03    Post subject: Формализованная задача Reply with quote

Задача формализована.

На томе содержатся исключительно JUNCTION, созданные одним и тем же плагином. Вид их одинаков.
Информация обо всех JUNCTION вываливается в файл:

dir /AL /S H:\ >JtoS.txt

В итоге JtoS.txt содержит регулярную структуру данных. Например:

Code:

 Том в устройстве H имеет метку 2 NTFS
 Серийный номер тома: CAE4-9F0A


 Содержимое папки H:\Слушать\Слушать\ Инструменты\Труба (trumpet)

09.12.2010  23:43    <JUNCTION>     Baldauf Rudiger [\??\H:\Фонотека\Jazz - fusion\Baldauf Rudiger]
29.10.2011  02:21    <JUNCTION>     Beiderbecke Leon Bix [\??\h:\Фонотека\Jazz\Beiderbecke Leon Bix]
...
               0 файлов              0 байт
...

 Содержимое папки H:\Слушать\Слушать\Modern jazz

09.10.2010  08:28    <JUNCTION>     Lloyd Charles [\??\H:\Фонотека\Jazz - avant-guard\Lloyd Charles]
               0 файлов              0 байт

 Содержимое папки H:\Слушать\Слушать\Smooth

23.08.2010  21:29    <JUNCTION>     Blake Aaron - Desire (2007) [\??\H:\Фонотека\Jazz - smooth\Aaron Blake\Blake Aaron - Desire (2007)]
02.09.2010  18:56    <JUNCTION>     Club des Belugas - Swop (2008) [\??\H:\Фонотека\Jazz - smooth\ Various\Club des Belugas - Swop (2008)]
...
               0 файлов              0 байт

     Всего файлов:
               1 файлов              0 байт
             665 папок  316*940*726*272 байт свободно


Очевидно, вся информация, нужная для реорганизации дисков, присутствует.

Формально нужно организовать цикл по секциям, начинающимся со строк “Содержимое папки”.
В каждой секции пройти по строкам, содержащим “<JUNCTION>”, каждый раз в переменную %t помещая содержимое квадратных скобок без символов “\??\” (целевой объект), а в переменную %l – ссылку.

Для первого вхождения:
%t = “H:\Фонотека\Jazz - fusion\Baldauf Rudiger”,
%l = “H:\Слушать\Слушать\ Инструменты\Труба (trumpet)\Baldauf Rudiger”.
Для второго вхождения:
%t = “h:\Фонотека\Jazz\Beiderbecke Leon Bix”,
%l = “H:\Слушать\Слушать\ Инструменты\Труба (trumpet)\Beiderbecke Leon Bix”.
и т.д.

%t лежит внутри “[\??\ ... ]”.
%l образуется конкатенацией строки, стоящей следом за “Содержимое папки” , бэк-слеша и строки, стоящей между “<JUNCTION>” и строкой ”[\??\“ без лидирующих и замыкающих пробелов.

В именах файлов, кроме русских букв, могут встречаться спецсимволы (,;:_ и т.п.).

Процедура замены JUNCTION на SYMLINKD понятна. Для этого есть соответствующая команда NTLinks Maker. Есть ещё и штатная команда MKLINK /D ...

Требуется, по возможности, помощь в шаблоне обработки.
Процедура замены с удалением JUNCTION и созданием SYMLINKD вставляется в шаблон без особых хлопот.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group