Страница 2 из 3
Добавлено: Вт июн 22, 2010 13:41
Psycho
MVV писал(а):Psycho писал(а):Надо измерить реальный размер папки windows\WinSxS на win7. Там очень много жестких ссылок - из за чего размер возвращается больше чем на самом деле.
Ну используй мой вариант:
MVV писал(а):Пожалуй, единственное что могу предложить - это найти все файлы в интересующей папке, вывести на панель, добавить колонку идентификатора файла из плагина NTLinks, отсортировать список по ней, экспортировать в эксель и удалить дубликаты строк.
Ответ на твой вопрос он тебе даст.
Спасибо за ответ.
Я решил попробовать сделать плагин, раз такого нет.
Т.е. по идее плагин должен быть File System типа, при нажатии пробела должен начать подсчитывать при этом вывести прогресс бар.
Если у вас есть другие идеи, по поводу того как должен работать плагин с точки зрения юзера, какие настройки должен иметь, пожалуйста сообщите.
Добавлено: Вт июн 22, 2010 13:44
MVV
Сразу обрадую, файлсистемный плагин не позволяет подсчитывать размер при нажатии пробела - ТК выполняет это действие самостоятельно. Но ты можешь при запросе свойств папки подсчитывать ее размер и показывать окошко с результатом.
Добавлено: Вт июн 22, 2010 13:52
Psycho
MVV писал(а):Сразу обрадую, файлсистемный плагин не позволяет подсчитывать размер при нажатии пробела - ТК выполняет это действие самостоятельно. Но ты можешь при запросе свойств папки подсчитывать ее размер и показывать окошко с результатом.
Если есть время, может ты попробуешь сделать? Тем более ты уже писал плагин в той же области.
Если нет, тогда попробую я, скорее всего на Delphi KOL для минимального размера. Отпишись pls .
Добавлено: Вт июн 22, 2010 14:09
Flasher
MVV писал(а):Пожалуй, единственное что могу предложить - это найти все файлы в интересующей папке, вывести на панель, добавить колонку идентификатора файла из плагина NTLinks, отсортировать список по ней, экспортировать в эксель и удалить дубликаты строк.
А не проще в нужной папке нажать Ctrl+B, отсортировать в
NTLinks по реальному пути, и потом выделить все файлы, у которых путь начинается с нужной папки (Shift+End/Home(в засисимости от порядка сортировки: по убыванию/возрастанию и первого/последнего файла с нужным путём под курсором))? Вот и будет быстрый результат.
Добавлено: Вт июн 22, 2010 14:11
MVV
Времени мало. Есть желание - пиши сам, в случае чего помогу с индексами и т.п. Хотя, получать индексы несложно - открыл файл с помощью CreateFile и потом получил структурку с помощью GetFileInformationByHandle. Ну а далее наверное map использовать, или сортированный массив для бинарного поиска индекса - чтобы считать файлы без повторов.
А для минимального размера вообще без форм делай - просто винапишный MessageBox как окно свойств)
Добавлено: Вт июн 22, 2010 14:16
Psycho
MVV писал(а):Времени мало. Есть желание - пиши сам, в случае чего помогу с индексами и т.п.
Спасибо. Для меня самое сложное это интеграция с totalcmd в виде плагина.
А для минимального размера вообще без форм делай - просто винапишный MessageBox как окно свойств)
С KOL MCK все равно меньше размер даже в случае dll или консоли. Ряд базовых системных делфийских модулей переписан.
Ну а с формами, несжатый exe получается от 9 кб (одна пустая форма).
Добавлено: Вт июн 22, 2010 14:31
GGS
Flasher писал(а):в нужной папке нажать Ctrl+B, отсортировать в NTLinks по реальному пути
Если в нужной папке находятся несколько реальных файлов с одинаковыми индексами, то что дальше? "Результат быстрый", но неверный.
Psycho
Кстати, если у Вас Win7, то помимо жёстких ссылок там имеются символические папки и пр. Имейте это ввиду при написании плагина. Успехов.
Добавлено: Вт июн 22, 2010 14:41
Flasher
GGS писал(а):Если в нужной папке находятся несколько реальных файлов с одинаковыми индексами, то что дальше? "Результат быстрый", но неверный.
Одинаковыми в одной общей папке? Во-первых, это редкость, во вторых, можно выделенные файлы после отсортировать по символьным путям. Ничего сложного.
Добавлено: Вт июн 22, 2010 14:42
MVV
Кстати, если у Вас Win7, то помимо жёстких ссылок там имеются символические папки и пр.
Точки переподключения есть и в XP - junction тому пример. А в висте добавились лишь символические ссылки на файлы/папки... В любом случае, узнать, что текущий файл/каталог является точкой переподключения, элементарно - вызвать GetFileAttributes, указав путь к файлу/каталогу, и проверить в возвращенном значении флаг FILE_ATTRIBUTE_REPARSE_POINT. А дальше уже смотреть, нужно учитывать такой объект, или нет.
Flasher писал(а):GGS писал(а):Если в нужной папке находятся несколько реальных файлов с одинаковыми индексами, то что дальше? "Результат быстрый", но неверный.
А как они могут быть одинаковыми-то? Пути то всё равно различаются.
Скажем, есть у меня папка А, в которой папки Б и В, и есть файл bbb.ccc, который имеет две жестких копии - в папке Б и в папке В. Пути у каждого файла свои (А\Б\bbb.ccc и А\В\bbb.ccc), размеры и индексы одинаковые. А задача стоит узнать, сколько же реально весит папка А - но при этом не нужно считать размер файла bbb.ccc два раза.
Добавлено: Вт июн 22, 2010 14:44
Psycho
Вопрос к знающим. Неужели никак нельзя перехватить Space?
Если нет, то по идее можно назначить горячую клавишу и после выводить свою форму с прогресс баром (т.к. прогресс затянется, папки по размеру измеряются в гигабайтах)?
Спецификацию написания плагинов для tc я только к вечеру почитаю, поэтому не сильно бейте если вопрос в некоторых местах не верный.
Добавлено: Вт июн 22, 2010 14:47
MVV
Думаю, удобнее будет написать не файлсистемный плагин, а плагин-упаковщик, который будет в фоновом режиме обрабатывать подаваемые от ТК файлы и подсчитывать суммарный размер, при этом следя, чтобы не было повторов. А дальше можно либо выдавать сообщение в фоновом потоке, либо сохранять отчет в файл. По идее, так будет намного проще, и удобнее для юзера - выделил папки/файлы, нажал Alt+F5, выбрал пакер и жди отчета, или работай дальше.
Перехватить-то пробел можно, но придется проверять, в панели ли он был нажат, в правильной ли панели и т.п.
Добавлено: Вт июн 22, 2010 14:54
Flasher
MVV писал(а):Скажем, есть у меня..
См. предыдущий пост.
Добавлено: Вт июн 22, 2010 14:58
Psycho
MVV
В идеале хотелось бы так:
Юзер выделил папку (даже не в FS списке, а в стандарном списке), и нажал горячую клавишу, показалась форма, на которой прогресс, и доп. инфа. Форму можно скрыть в фон.
Возможно ли сделать подобное?
Можно ли вызвать плагин по горячей клавише, и чтобы TC передал плагину выделенный путь? Может в этом случае удобней (для пользователя) даже сделать отдельным exe?
Добавлено: Вт июн 22, 2010 15:10
MVV
Flasher писал(а):MVV писал(а):Скажем, есть у меня..
См. предыдущий пост.
И что? Ты думаешь, все вокруг телепаты и улавливают твои мысли на расстоянии? Я, например, не вижу в твоем предыдущем посте ничего полезного в данном случае, ничего, что поможет для двух файлов-копий в одной родительской папке учесть размер только 1 раз.
Рассмотрим даже еще более простой вариант - есть папка А, в которой два файла bbb.ccc и ddd.ccc, которые являются жесткими копиями друг для друга. Как при подсчета размера папки А учесть размер этого файла с двумя записями в папке только 1 раз?
В идеале хотелось бы так:
Тогда забей на плагины и пиши утилиту. А юзер забиндит ее вызов на хоткей и ТК будет передавать утилите список файлов/папок (параметр %L юзер-команды), который утилита будет расширять до полного списка файлов и выдавать результат.
Может в этом случае удобней (для пользователя) даже сделать отдельным exe?
Во, и я о чем.
Добавлено: Вт июн 22, 2010 15:13
GGS
MVV писал(а):Скажем, есть у меня папка А, в которой папки Б и В, и есть файл bbb.ccc, который имеет две жестких копии - в папке Б и в папке В.
Добавлю, что этот файл в папках Б и В может иметь совершенно разные имена. Так же как и в одной папке.