Построение дерева каталогов
Вложений: 2
Всем привет. очередной мой нубский опус из элементарных вещей, изученных мной при достижении азов данного языка.
На этот раз передо мной встала задача - построить древовидную структуру файлов и папок для составления отчета. после хождения по просторам интернета, ничего стоящего (бесплатных естественно) кроме Karen's directory print и zdp не нашел. Но меня ждали разочарования по каждой из прог. Первая всюду вставляет ненужные мне и моему начальству строки типа мэйд бай бла бла бла, а вторая в таком непотребном виде представляет, что смотреть уже не хочется. Поэтому я решил осуществить сие дело своими (и AutoIt) силами. И так - скрипт строит дерево каталогов в текстовом и html видах с указанием кол-во файлов и папок в конце. Во втором случае есть подсветка определенных типов файлов условно разбитых на категории, типа: текстовые файла, архивы, видео-файлы, аудио файлы и тд и также непосредственно перейти в нужную папку щелкнув по ссылке. При желании список можно легко дополнить внеся соответствующие изменения в include файл со списком расширений придерживаясь формата. как обычно, ни на что не претендует, лично моим требованиям удовлетворяет. если есть что сказать/исправить/дополнить, то как говорится - you're welcome. PS: не выбирайте папки с большим кол-вом файлов, скорость оставляет желать лучшего. Updated Дополнено до версии 2 :dirol: * немного исправлены разделители иерархии, как в текстовом так и в html-ном вариантах + время генерации файла с деревом Маааленький апдейт до версии 2.1 + Добавил favicon.ico PS: имеется небольшой баг при наличии одних только папок, без файлов внутри в виде лишней полоски в html - варианте (см. скрин) победить не смог, бился долго. может у кого возникнут идеи. буду только рад PPS: Спасибо Creat0R'у за исправления по ускорению Спасибо SyDr за подсказку о встроенной виндовой тулзе, которая легла за основу нового варианта html-версии построения |
Вложений: 1
Неплохо! :up
Я тут переделал немного(?) - ускорение плюс читабельность кода. В архиве две версии... - Первая более шустрая, но в ней есть минус - имена файлов и папок сортируются в том порядке, в котором были найдены. - Вторая версия медленнее, т.к использует отдельные обработки файлов и папок, т.е для папок и файлов запускается новый поиск, что замедляет работу - но зато сортировка работает как и задуманно(?). P.S Для ускорения обработки циклов, кроме прочего я изменил метод поиска расширении файлов, тут быстрее искать через StringInStr, чем вызывать поиск в массиве который использует лишние циклы. |
В состав винды входит программа TREE. Делает тоже самое. Правда, без всякого оформления.
Но вещь всё равно полезная. Спасибо. |
Привет, Creat0R
Спасибо за дополнения. Непривычно немножко из-за переобозначений, но для постороннего глаза, наверное, действительно читабельнее ;) По поводу скорости - да, действительно, ускорение налицо. Причем даже во втором скрипте, где отдельно обрабатываются файлы и папки, как в моем скрипте. Отсюда я делаю вывод, что вся медленность действительно была в поиске по расширениям через массивы, и возможно из-за filewriteline вместо filewrite с возвратом каретки в конце. PS: я наверное возьму на вооружение именно второй вариант, так как мне кажется что лучше когда сначала идут папки а потом уже файлы в стиле total commander'а |
Цитата:
Например строковые переменны префиксятся $s, массивы $a. Подробнее тут (Variable Names). Цитата:
|
SyDr,
надо же изобрести колесо, иначе скушно :biggrin: а оформление к выводу от TREE можно легко приделать при желании. PS: спасибо, я не знал про эту прогу. сколько искал в гугле, ни одного упоминания почему-то о ней. Кстати работает он гораздо быстрее чем наши с Creat0R'ом скрипты Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
вобщем, я понял, возьму на вооружение ;) |
Цитата:
|
кстати, Creat0R, условие @extended при проверке на корень диска почему то не работает должным образом.
если поставить условие которые было у меня все норм. можешь проверить :) |
Цитата:
Исправил: Код:
$sRoot_Name = '' |
смотрим шапку
|
|
Вложений: 1
Цитата:
возьми любую папку с подпапками, но без файлов, в самих подпапках файлы могут быть. пример в аттаче |
смотрим шапку (добавил favicon)
|
Добрый день, а как дополнить программу выводом размера и/или даты изменения файла?
|
Время: 18:40. |
Время: 18:40.
© OSzone.net 2001-