HankHank
|
Posted: Thu Jan 27, 2022 16:03 Post subject: Формализованная задача |
|
|
Задача формализована.
На томе содержатся исключительно 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 вставляется в шаблон без особых хлопот. |
|