Ищу программу для создания дерева каталогов из списка
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Программное обеспечение

#1: Ищу программу для создания дерева каталогов из списка Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 07:09
    —
Приветствую всех!
Есть текстовый файл, в каждой строке которого записан полный путь к файлу.
Нужна программа, которая строила бы дерево каталогов из такого текстового файла и отображала дерево, как проводник Windows.
Нужно, для того, чтобы можно было посмотреть дерево каталогов из отчёта других программ.

#2:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Aug 10, 2016 11:36
    —
Насчет программы не знаю, но зато есть мой скрипт, который выращивает дерево поддиректорий текущего пути. Для создания файла-списка используется программа xxcopy. Впрочем, можно воспользоваться и внутренними возможностями PowerPro, точнее, плагина file.
В твоем случае, как я понял, файл-список уже готов. Это упрощает дело: список скармливается скрипту напрямую. Если пришлешь пример списка, допилю скрипт.
Кстати, дерево нужно только смотреть или при щелчке по пункту выполнять какие-либо действия?

#3:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 11:57
    —
Список самый обычный. Типа:
Code:
C:\1\123\file.abc
C:\1\123\456\a.txt
C:\2\fgdgdfg.avi

Если есть вариант скорпить CSV-список, то это ещё лучше.
CSV может быть такой:
Code:
File;Size;Status
C:\1\123\file.abc;1000;файл удалён - содержит непрочитанные сектора
C:\1\123\456\a.txt;200;файл удалён - содержит непрочитанные сектора
C:\2\fgdgdfg.avi;2048000;файл удалён - содержит непрочитанные сектора

CSV может быть в юникодной кодировке. Поэтому желателен ключ для скрипта, который бы указал ему, что работать нужно в юникоде. В CSV все поля, кроме полного пути не обязательно присутствуют.

Но дерево нужно не ввиде меню, а в виде проводника, как проводник винды:

Никаких действий для дерева не нужно. Нужно только дерево, чтобы просмотреть структуру каталогов и файлов в нём.
Если к файлу ещё и Status прикрутить (из CSV-списка), то вообще шикарно.

#4:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Aug 10, 2016 13:36
    —
Ты изначально написал "дерево каталогов",а в примере фигурируют файлы. Это усложняет дело, потому что по строке полного пути нельзя сделать вывод о том, что это - файл или директория, надо смотреть следующую строку. Точнее, сделать это легко, если список отражает структуру реального диска на текущем компьютере - как я понимаю, мы имеем не тот случай.
Четко ставь ТЗ, иначе ничего не выйдет: что именно содержится в списке?
Это будет именно меню (пусть без действий при щелчке по пункту). Если тебе нужно конкретно проводниковое окно - извини, не ко мне

#5:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 13:47
    —
Ciber SLasH
Есть скрипты создания кликабельных html-списков. Могу переделать для готового списка (включая %WL для выбранных в ТС элементов), если устроит такое представление.
Либо обычный текст, что ещё проще (уже имеется заготовка).
Разумеется, пути в списке должны быть отсортированы по родительской принадлежности.

#6:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Aug 10, 2016 14:26
    —
Еще вопрос вдогонку: список отсортирован? Если да, то сначала идут директории, потом файлы, или все подряд по алфавиту? То есть если A.txt - это файл, а B.dir - директория (у них же могут быть расширения, не так ли?), то в каком порядке они идут в списке?

#7:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 14:33
    —
Flasher
Можно и HTML, только, чтобы в нём можно было бродить по дереву.
Вахмурка
Список может быть как отсортирован, так и нет. Директории с именами, как у файлов (с расширениями) - пока не нужны.
Пока список - это только файлы.

#8:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 15:04
    —
Ciber SLasH
Есть ещё такая мысль (не знаю, насколько она понравится): создавать по списку в папке Temp структуру c нулевыми файлами (или симлинками), а потом выводить системное окно "Обзор папок" с открытием %Temp%\<буква диска>.

#9:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 15:12
    —
Нет, в папке TEMP не устраивает.

#10:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 15:14
    —
Ciber SLasH
Да в любой можно. Просто Temp - для временных, очищать проще.

#11:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 15:15
    —
Ну в принципе, лучше что-то, чем вообще ничего.

#12:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 15:20
    —
Тогда вопроса два. Где и в каком из указанных виде создавать файлы?

#13:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 15:22
    —
Почему желательна программа (и забыл указать, что должна быть бесплатная): чтобы можно было клиенту отправить список файлов и программу. Клиент смог бы сам открыть список и увидел бы дерево каталогов, а не унилую километровую портянку.

В эти списки я сохраняю отчёт PC-3000 о битых файлах при восстановлении данных. И список может быть очень большой. Прошлый раз был список на 9000 строк. Поэтому нужна визуализация дерева каталогов.

ЗЫ: у ACELab есть DEViewer, но они не развивают эту программу и на данный момент нет возможности импортировать список из текстового файла, чтобы программа построила дерево каталогов.

#14:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 15:49
    —
Реализация для паблика логична для списка папок (такие штуки вроде бы имеются), а не групп неотсортированных файлов из разных папок. Вряд ли кто-то ставил такую задачу на паблик. Но нарисовать GUI, конечно, можно.

#15:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Aug 10, 2016 15:59
    —
Quote:
чтобы можно было клиенту отправить список файлов и программу
Штирлиц, "17 мгновений весны" wrote:
Вот с этого надо было начинать!
PowerPro исключается - корректно его поставить, да еще под Вин10, не всякий сможет
Quote:
список на 9000 строк
Опять же - не уверен, что PowerPro потянет, хотя надо попробовать.

Эх, не умеет народ ТЗ ставить...

#16:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 16:23
    —
Ciber SLasH
Тут на AHK, думаю, в течении дня кто-нибудь спокойно накатает годный во всех смыслах скрипт, скомпилить который - 5 сек. Советую создать топик.

#17:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Wed Aug 10, 2016 16:57
    —
Я бы и сам написал программу, но не совсем догоняю алгоритм построения дерева из списка.
Может кто с алгоритмом расскажет?

#18:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Aug 10, 2016 16:58
    —
Я работаю над этим. Если получится - выложу скрипт, срисуешь алгоритм

#19:  Author: FlasherLocation: Москва PostPosted: Wed Aug 10, 2016 17:13
    —
Ciber SLasH
Сортируется список по алфавиту в порядке возврастания папок в пути.
Число папок определяется числом элементов Split-массива по \.
Дальше в цикле для отсортированного списка группируются файлы в соотствующие им папки с созданием отступа, равным глубине вложенности*2.

#20:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Thu Aug 11, 2016 04:00
    —
Flasher
Отступы - это не то. Если писать программу, то слева TreeView, справа ListView.
В TreeView иерархия папок. По клику на папке - справа в ListView отображается список файлов.

Посмотри, как в DEViewer выглядит отчёт из PC-3000: acerep-отчёт
DEViewer можно скачать тут.

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

#21:  Author: Skif_off PostPosted: Thu Aug 11, 2016 04:31
    —
Ciber SLasH
Список с группировкой файлов удобнее для заполнения TreeView и ListView при клике. Вообще, это тот ещё гемор, нет ли способа привести список к тому виду, который прожуёт DEViewer?

P.S.
Quote:
C:\2\fgdgdfg.avi;2048000;файл удалён - содержит непрочитанные сектора

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

#22:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Thu Aug 11, 2016 11:06
    —
Quote:
C:\2\fgdgdfg.avi;2048000;файл удалён - содержит непрочитанные сектора

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

Это был пример.
Quote:
привести список к тому виду, который прожуёт DEViewer?

У него файл - это БД sqlite. Думаю, что сделать прогу конвертирования обычного списка в его формат БД sqlite - будет ещё геморнее.

#23:  Author: Skif_off PostPosted: Thu Aug 11, 2016 17:27
    —
Ciber SLasH
Не уверен, что сконвертить в нужную базу SQLite больший гемор, чем сделать подобное с нуля.
Нашёл такую тему: Загрузка данных из объемного текстового файла в TreeView.

#24:  Author: Ciber SLasHLocation: С.-Петербург PostPosted: Thu Aug 11, 2016 22:47
    —
Skif_off wrote:
Нашёл такую тему: Загрузка данных из объемного текстового файла в TreeView.

Запускал - выбираю файл, появляется пустое окно. Что-то в скрипте не работает...

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

Заработало. Нужно было в директорию AutoIt положить sqlite3.dll, sqlite3_x64.dll.
Дерево уже есть. Осталось добавить в этот скрипт ListView.

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

Здорово! Скрипт и файлы отображает в дереве и рядом базу создаёт (осталось переделать скрипт так, чтобы база под DEViewer создавалась). Можно обойтись и без ListView.

Skif_off выражаю благодарность за полезнейший au3-скрипт.

#25:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Fri Aug 12, 2016 11:18
    —
Я уже понял, что проблема решена, и что применение скриптов PowerPro нецелесообразно, однако, во-первых, я обещал выложить пример применения алгоритма. А во-вторых, скрипт может пригодиться в дальнейшем, поэтому я писал его уже не для того, кто попросил, а для себя, любимого:
 Hidden text



Total Commander -> Программное обеспечение


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group