Поскольку он проделал неплохую работу по описанию и формализации задачи, то в один из вечеров я сел и написал эту программу за пару часов. Впрочем, поскольку сама задача не сложна, это не составило особого труда.
В дальнейшем я потратил еще часок, чтобы выложить эту программу (в исходных текстах, и в виде готовой инсталляции) на GitHub и создать простое, но весьма подробное описание.
Приложение работает на Windows OS от Windows XP до Windows 10 и чрезвычайно просто как в использовании, так и конфигурировании под Ваши нужды.
Для установки достаточно скачать содержимое папки Install на Ваш PC, и запустить файл install.cmd. После чего в контекстном меню Explorer-а, при выделенном файле или папке, должно появиться новое меню:
В данном меню будут отображены все текущие шаблоны для вывода, лежащие в папке, откуда было запущено расширение.
При клике на необходимом шаблоне (в суб-меню), практически моментально мы получим и сам отчет (автоматически запустится notepad.exe):
Для удаления расширения достаточно запустить файл uninstall.cmd.
Мой друг уверил меня, что он не нашел программ с подобной функциональностью; надеюсь, что это приложение кому-нибудь да пригодится!
Переменные для включения в шаблон описаны на главной странице проекта и не требуют особых пояснений. Исходный код (я надеюсь) прост и ясен, используйте и модифицируйте для Ваших нужд.
Приятного сканирования!
Комментарии (27)
Garrett
11.01.2017 18:51+2Но всё же избегайте использование managed языки для написания in-process Shell Extension для Explorer'а.
Do not write in-process shell extensions in managed code
Лучше всё же на c++sens_boston
11.01.2017 19:08Вся работа собственно с shell-ом базируется на проекте SharpShell, достаточно стабильном и отработанном. Не могу утверждать наверняка, но, как мне кажется, статья 10-летней давности, которую Вы привели, уже не актуальна.
Лично сам я этим приложением не пользуюсь, но мой друг никаких багов или неприятных side effects за все время эксплуатации не обнаружил.rg_software
12.01.2017 02:25В статье специально "update 2013" есть.
sens_boston
12.01.2017 05:59Автор SharpShell-а тоже ссылается на пару статей с msdn. Ну, и самое главное: все прекрасно работает, в этом Вы можете легко убедиться сами.
Almet
12.01.2017 18:12Вот если бы еще графики объемов хранимых данных подключить, было бы шикарно
sens_boston
12.01.2017 18:24Немного не понял, какие графики Вы имеете ввиду (мы, все-таки, имеем дело с текстом — как отображать, псевдографикой?), но, если Вам это действительно нужно, создавайте тикет на гитхабе с подробным описанием, обсудим…
Almet
13.01.2017 15:26Я имел ввиду объем данных, хранимых в каталогах, иногда просто удобно график посмотреть, какая из директорий занимает много места
undefined7
12.01.2017 18:12спасибо за софтину
sens_boston
12.01.2017 18:27Пожалуйста, пользуйтесь на здоровье! Рад, что кому-то пригодилось (собственно, только для этой причины и публиковался этот обзорчик); надо будет еще парочку своих маленьких, но полезных проектов опубликовать.
P.S. На github-е/codeplex-е, вообще-то, лежит огромное количество полезных, хороших и бесплатных программ. Проблема, собственно, найти необходимое.
tapfor
12.01.2017 18:12не совсем понятно, зачем в информации о папке в xml файле дважды указан размер (86.5GB… 86.5GB)?
sens_boston
12.01.2017 18:18Шаблоны вывода, идущие с программой, предоставлены только для демонстрационных целей. Видимо, я просто ошибся.
vadimpl
12.01.2017 18:12не нашел программ с подобной функциональностью
была когда-то CFi ShellToys. Очень помогала получать в нужном виде инфо по файлам/папкамsens_boston
12.01.2017 18:21Вполне возможно, но мой друг не смог найти в свое время, или, возможно, функциональность была не совсем такой, как ему было нужно. К тому же (погуглил эти Cfi ShellToys), эта утилита была платной, вроде?
А тут бесплатный аналог, да еще и open source :)vadimpl
12.01.2017 21:18Да, платная. Но возможностей у неё всё-таки поболее будет.
sens_boston
12.01.2017 21:26А каких не хватает, можете перечислить? Или лучше даже открыть тикет на гитхабе: если смогу, то выберу время и реализую.
vadimpl
12.01.2017 21:52Не, спасибо; уже пару лет назад бросил всё это.
В программерстве ноль, поэтому изобретал велосипеды для своего увлечения — были большие пачки фото, которые постил на (сегодня помирающем) panoramio. В качестве промежутка (базы) использовал Excel, куда и надо было вбить данные фото. Вот этот ShellToys и сильно выручал. Путём несложных манипуляций список фото (сотни штук за поездку) из текстового вида, сгенерированного ShellToys, приобретал такой монструозный вид, где в первых столбцах были номер фото, дата, время (остальное уже ручками + формулами).
soulruins
13.01.2017 18:02Программка полезная, но PowerShell же может. Как пример для одной (корневой) папки:
Get-ChildItem -Recurse | Measure-Object -Property Length -sum
На выходе получим что-то вроде:
Count : кол-во файлов
Average :
Sum : общий размер в байтах
Maximum :
Minimum :
Property : Length
Тут выше писали про графики, так вот к этому можно прикрутить модуль «Import-Excel», который автоматически при экспорте в Excel ещё и графики по полученным данным построит.sens_boston
13.01.2017 20:23Программка полезная, но PowerShell же может.
Ну, может то он может, но немного не то. Думаю, чтобы получить «то» (в точности такой же отчет, как и у File System Scanner — а именно в создании отчета по заданному шаблону и состоит функциональность программы), то PowerShell скрипт для этого будет куда сложнее моего C# кода. Ну, по удобству использования скрипты безусловно проигрывают shell extension.
rvt
13.01.2017 20:15Странно — скачал, запустил install.cmd. Уходит в бесконечный цикл. Я попытался это мелькание как-то прервать, получилось. Но выскочило сообщение, что нет файла сценария getadmin.vbs.
sens_boston
13.01.2017 20:17getadmin,vbs — это PowerShell скрипт, создающийся в %temp%-е, для повышения привилегий.
Можете просто из elevated command prompt (Run as administrator) выполнить команду: srm.exe install FileSystemScanner.dll -codebase
qw1
15.01.2017 16:26На такую мелочь писать целую программу )))
Я в подобных случаях (когда нужно снять слепок файловой системы) просто выполнял команду dir /a /s > file.txt
Для просмотра был простой скрипт к Far, который разбирал этот список как архив (выдавал «оглавление архива», чтобы можно было в file.txt зайти, как в архив), можно было неспешно ходить по каталогам, оценивать вес отдельных файлов и каталогов.
Потом обнаружил, что я не один такой, и есть более стабильный плагин ls -lRsens_boston
15.01.2017 18:51На такую мелочь писать целую программу )))
Я в подобных случаях (когда нужно снять слепок файловой системы)
Вы неверно понимаете предназначение программы: дело отнюдь не в «слепке файловой системы».qw1
15.01.2017 20:10Конечно, ведь вы не написали, для каких целей ваш друг использует программу.
Я написал комментарий под влиянием коммента NeoCode, т.к. сам встречался именно с таким способом использования.sens_boston
15.01.2017 21:30Все очень просто: мой друг использует эту программку для генерации контента для веб-серверов и сервисов, где, по определенным причинам, модификация кода (например, для динамической генерации подобных отчетов) невозможна. По его словам, использование этой утилиты сократило время, затрачиваемое обычно на проведение таких работ, на 99% :)
Я понимаю, что звучит это не очень «технологично», и может быть достигнуто кучей иных способов, но, в данном случае, это оказалось практически единственное удобное и приемлемое решение.
NeoCode
Я подобную программу (только консольную утилиту под DOS) делал очень давно когда учился в институте, с целью просканировать многочисленные сетевые диски университетской сети на предмет интересного (исходники, электронные книги и мануалы, софт...). Интернет тогда был dial-up 5 часов 100 рублей на месяц, флэшек не было — только дискеты, поэтому утилита весьма помогала: можно было дома в спокойной обстановке посмотреть содержимое этих дисков и решить что качать и в каком объеме, чтобы при следующем посещении компьютерного класса не рыться а сразу приступить к делу.