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 Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Psycho



Joined: 22 Jun 2010
Posts: 8

Post (Separately) Posted: Tue Jun 22, 2010 13:41    Post subject: Reply with quote

MVV wrote:
Psycho wrote:
Надо измерить реальный размер папки windows\WinSxS на win7. Там очень много жестких ссылок - из за чего размер возвращается больше чем на самом деле.

Ну используй мой вариант:
MVV wrote:
Пожалуй, единственное что могу предложить - это найти все файлы в интересующей папке, вывести на панель, добавить колонку идентификатора файла из плагина NTLinks, отсортировать список по ней, экспортировать в эксель и удалить дубликаты строк.

Ответ на твой вопрос он тебе даст.


Спасибо за ответ.
Я решил попробовать сделать плагин, раз такого нет.
Т.е. по идее плагин должен быть File System типа, при нажатии пробела должен начать подсчитывать при этом вывести прогресс бар.
Если у вас есть другие идеи, по поводу того как должен работать плагин с точки зрения юзера, какие настройки должен иметь, пожалуйста сообщите.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue Jun 22, 2010 13:44    Post subject: Reply with quote

Сразу обрадую, файлсистемный плагин не позволяет подсчитывать размер при нажатии пробела - ТК выполняет это действие самостоятельно. Но ты можешь при запросе свойств папки подсчитывать ее размер и показывать окошко с результатом.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Psycho



Joined: 22 Jun 2010
Posts: 8

Post (Separately) Posted: Tue Jun 22, 2010 13:52    Post subject: Reply with quote

MVV wrote:
Сразу обрадую, файлсистемный плагин не позволяет подсчитывать размер при нажатии пробела - ТК выполняет это действие самостоятельно. Но ты можешь при запросе свойств папки подсчитывать ее размер и показывать окошко с результатом.


Если есть время, может ты попробуешь сделать? Тем более ты уже писал плагин в той же области.
Если нет, тогда попробую я, скорее всего на Delphi KOL для минимального размера. Отпишись pls .
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 22, 2010 14:09    Post subject: Reply with quote

MVV wrote:
Пожалуй, единственное что могу предложить - это найти все файлы в интересующей папке, вывести на панель, добавить колонку идентификатора файла из плагина NTLinks, отсортировать список по ней, экспортировать в эксель и удалить дубликаты строк.
А не проще в нужной папке нажать Ctrl+B, отсортировать в NTLinks по реальному пути, и потом выделить все файлы, у которых путь начинается с нужной папки (Shift+End/Home(в засисимости от порядка сортировки: по убыванию/возрастанию и первого/последнего файла с нужным путём под курсором))? Вот и будет быстрый результат.

Last edited by Flasher on Tue Jun 22, 2010 14:11; edited 1 time in total
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue Jun 22, 2010 14:11    Post subject: Reply with quote

Времени мало. Есть желание - пиши сам, в случае чего помогу с индексами и т.п. Хотя, получать индексы несложно - открыл файл с помощью CreateFile и потом получил структурку с помощью GetFileInformationByHandle. Ну а далее наверное map использовать, или сортированный массив для бинарного поиска индекса - чтобы считать файлы без повторов.

А для минимального размера вообще без форм делай - просто винапишный MessageBox как окно свойств)
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Psycho



Joined: 22 Jun 2010
Posts: 8

Post (Separately) Posted: Tue Jun 22, 2010 14:16    Post subject: Reply with quote

MVV wrote:
Времени мало. Есть желание - пиши сам, в случае чего помогу с индексами и т.п.

Спасибо. Для меня самое сложное это интеграция с totalcmd в виде плагина.

Quote:
А для минимального размера вообще без форм делай - просто винапишный MessageBox как окно свойств)

С KOL MCK все равно меньше размер даже в случае dll или консоли. Ряд базовых системных делфийских модулей переписан.
Ну а с формами, несжатый exe получается от 9 кб (одна пустая форма).
Back to top
View user's profile Send private message
GGS



Joined: 02 May 2009
Posts: 322

Post (Separately) Posted: Tue Jun 22, 2010 14:31    Post subject: Reply with quote

Flasher wrote:
в нужной папке нажать Ctrl+B, отсортировать в NTLinks по реальному пути

Если в нужной папке находятся несколько реальных файлов с одинаковыми индексами, то что дальше? "Результат быстрый", но неверный.
Psycho
Кстати, если у Вас Win7, то помимо жёстких ссылок там имеются символические папки и пр. Имейте это ввиду при написании плагина. Успехов.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 22, 2010 14:41    Post subject: Reply with quote

GGS wrote:
Если в нужной папке находятся несколько реальных файлов с одинаковыми индексами, то что дальше? "Результат быстрый", но неверный.
Одинаковыми в одной общей папке? Во-первых, это редкость, во вторых, можно выделенные файлы после отсортировать по символьным путям. Ничего сложного.

Last edited by Flasher on Tue Jun 22, 2010 14:47; edited 3 times in total
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue Jun 22, 2010 14:42    Post subject: Reply with quote

Quote:
Кстати, если у Вас Win7, то помимо жёстких ссылок там имеются символические папки и пр.

Точки переподключения есть и в XP - junction тому пример. А в висте добавились лишь символические ссылки на файлы/папки... В любом случае, узнать, что текущий файл/каталог является точкой переподключения, элементарно - вызвать GetFileAttributes, указав путь к файлу/каталогу, и проверить в возвращенном значении флаг FILE_ATTRIBUTE_REPARSE_POINT. А дальше уже смотреть, нужно учитывать такой объект, или нет.
Flasher wrote:
GGS wrote:
Если в нужной папке находятся несколько реальных файлов с одинаковыми индексами, то что дальше? "Результат быстрый", но неверный.
А как они могут быть одинаковыми-то? Пути то всё равно различаются.

Скажем, есть у меня папка А, в которой папки Б и В, и есть файл bbb.ccc, который имеет две жестких копии - в папке Б и в папке В. Пути у каждого файла свои (А\Б\bbb.ccc и А\В\bbb.ccc), размеры и индексы одинаковые. А задача стоит узнать, сколько же реально весит папка А - но при этом не нужно считать размер файла bbb.ccc два раза.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Tue Jun 22, 2010 14:44; edited 1 time in total
Back to top
View user's profile Send private message
Psycho



Joined: 22 Jun 2010
Posts: 8

Post (Separately) Posted: Tue Jun 22, 2010 14:44    Post subject: Reply with quote

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



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue Jun 22, 2010 14:47    Post subject: Reply with quote

Думаю, удобнее будет написать не файлсистемный плагин, а плагин-упаковщик, который будет в фоновом режиме обрабатывать подаваемые от ТК файлы и подсчитывать суммарный размер, при этом следя, чтобы не было повторов. А дальше можно либо выдавать сообщение в фоновом потоке, либо сохранять отчет в файл. По идее, так будет намного проще, и удобнее для юзера - выделил папки/файлы, нажал Alt+F5, выбрал пакер и жди отчета, или работай дальше.

Перехватить-то пробел можно, но придется проверять, в панели ли он был нажат, в правильной ли панели и т.п.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 22, 2010 14:54    Post subject: Reply with quote

MVV wrote:
Скажем, есть у меня..
См. предыдущий пост.
Back to top
View user's profile Send private message
Psycho



Joined: 22 Jun 2010
Posts: 8

Post (Separately) Posted: Tue Jun 22, 2010 14:58    Post subject: Reply with quote

Quote:
MVV


В идеале хотелось бы так:

Юзер выделил папку (даже не в FS списке, а в стандарном списке), и нажал горячую клавишу, показалась форма, на которой прогресс, и доп. инфа. Форму можно скрыть в фон.
Возможно ли сделать подобное?

Можно ли вызвать плагин по горячей клавише, и чтобы TC передал плагину выделенный путь? Может в этом случае удобней (для пользователя) даже сделать отдельным exe?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4815
Location: Ростов-Дон

Post (Separately) Posted: Tue Jun 22, 2010 15:10    Post subject: Reply with quote

Flasher wrote:
MVV wrote:
Скажем, есть у меня..
См. предыдущий пост.

И что? Ты думаешь, все вокруг телепаты и улавливают твои мысли на расстоянии? Я, например, не вижу в твоем предыдущем посте ничего полезного в данном случае, ничего, что поможет для двух файлов-копий в одной родительской папке учесть размер только 1 раз.

Рассмотрим даже еще более простой вариант - есть папка А, в которой два файла bbb.ccc и ddd.ccc, которые являются жесткими копиями друг для друга. Как при подсчета размера папки А учесть размер этого файла с двумя записями в папке только 1 раз?

Quote:
В идеале хотелось бы так:

Тогда забей на плагины и пиши утилиту. А юзер забиндит ее вызов на хоткей и ТК будет передавать утилите список файлов/папок (параметр %L юзер-команды), который утилита будет расширять до полного списка файлов и выдавать результат.

Quote:
Может в этом случае удобней (для пользователя) даже сделать отдельным exe?

Во, и я о чем.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Tue Jun 22, 2010 15:14; edited 1 time in total
Back to top
View user's profile Send private message
GGS



Joined: 02 May 2009
Posts: 322

Post (Separately) Posted: Tue Jun 22, 2010 15:13    Post subject: Reply with quote

MVV wrote:
Скажем, есть у меня папка А, в которой папки Б и В, и есть файл bbb.ccc, который имеет две жестких копии - в папке Б и в папке В.

Добавлю, что этот файл в папках Б и В может иметь совершенно разные имена. Так же как и в одной папке.
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 Previous  1, 2, 3  Next
Page 2 of 3

 
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