Home

Awesome

FileSystemScanner

Shell extension menu for the template-based file system scan

<html><head> <p class="c2"><span></span></p><p class="c2"><span></span></p><p class="c13"><span class="c6">1. Variables (Files/Folders):</span></p><p class="c2"><span></span></p><a id="t.daea2f8fc3eadeb35b2b83449ef348af037d3971"></a><a id="t.0"></a><table class="c20"><tbody><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c10"><span class="c16 c6 c12">Variable</span></p></td><td class="c17" colspan="1" rowspan="1"><p class="c10"><span class="c16 c6 c12">For Files</span></p></td><td class="c17" colspan="1" rowspan="1"><p class="c10"><span class="c16 c6 c12">For Folders</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>Item (file or folder) name as seen by Explorer (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c3">{%name%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c3">{%name%}</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span class="c5 c12">Item full name including a full path (string)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%fullname%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%fullname%}</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span class="c5 c12">Item path without name (string)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%path%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%path%}</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>Number of items inside the folder. (</span><span class="c14">number</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c12">-</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%itemcount%}</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>Size in bytes (</span><span class="c14">number</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%bytesize%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span>-</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>Size (human friendly) with suffixes &#39;B&#39;, &#39;kB&#39;, &#39;MB&#39; ,&#39;GB&#39;, &#39;TB&#39; etc. (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%size%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span>-</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>Date of creation in &ldquo;yyyy-mm-dd&rdquo; format (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c3">{%created%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span>-</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>Date of modification in &ldquo;yyyy-mm-dd&rdquo; format (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c3">{%modified%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span>-</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>File extension. If no extension, should explicitly use &ldquo;unknown&rdquo; (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%extension%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span>-</span></p></td></tr><tr class="c9"><td class="c18" colspan="1" rowspan="1"><p class="c7"><span>File type detected based on the file extension. File types: &ldquo;audio&rdquo; (mp3, aac, mpa etc.), &ldquo;video&rdquo; (avi, mkv, mp4, mpeg etc.), &ldquo;text&rdquo; (txt, doc, srt, sub etc.). If not detected by extension, should explicitly use &ldquo;unknown&rdquo;</span><sup><a href="#cmnt1" id="cmnt_ref1">[a]</a></sup></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span class="c3">{%type%}</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c10"><span>-</span></p></td></tr></tbody></table><p class="c2"><span></span></p><p class="c13"> <span class="c6">2. Variables (scan):</span></p><p class="c13"><span>The act of scanning (taking snapshot) may have it&rsquo;s own set of variables. For example with XML output the root element - &lt;scan&gt; - may have some attributes like date of scanning and media info (volume label, file system etc). This approach assumes that all selected files and/or folders reside on the same volume/drive. Even though it is technically possible to feed to the scanning application two files/folders residing on different drives/volumes, the program should detect the scan variables based on the FIRST received item only. All the remaining items in the selection should be processed without detecting the parameters of the volume they are residing on.</span></p><p class="c2"><span></span></p><p class="c2"><span></span></p><a id="t.83ceed99883298e356e8b96117d00707c8158828"></a><a id="t.1"></a><table class="c20"><tbody><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c16 c6 c12">Variable</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10 c30"><span class="c6 c12 c16"></span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span>The date scanning took place in &ldquo;yyyy-mm-dd&rdquo; format (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%scandate%}</span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span>The volume label/id on which the scanned files/folders reside (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%volumelabel%}</span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span>The filesystem of the volume the scanned files/folders reside: NTFS, FAT32, EXT4 etc. (</span><span class="c14">string</span><span class="c5 c12">)</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%filesystem%}</span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span class="c5 c12">Count of items (total) processed in the scan (number)</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%itemcount%}</span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span class="c5 c12">Count of folders processed in the scan (number)</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%foldercount%}</span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span class="c5 c12">Count of files processed &nbsp;in the scan (number)</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%filecount%}</span></p></td></tr><tr class="c9"><td class="c1" colspan="1" rowspan="1"><p class="c7"><span class="c5 c12">Scan time in seconds (number), for debug purposes and performance testing</span></p></td><td class="c1" colspan="1" rowspan="1"><p class="c10"><span class="c5 c3">{%elapsed%}</span></p></td></tr></tbody></table><p class="c2"><span></span></p><p class="c2"><span></span></p><p class="c13"><span class="c6">3. Features:</span></p><ul class="c28 lst-kix_up2ryue3bsgg-0 start"><li class="c11"><span>Program should be launched by context menu over the selection of files and/or folders. The context menu may have nested submenu with entries for each available format template (XML, HTML, JSON etc.)</span></li><li class="c11"><span>Recursively ignore special &amp; hidden system files (desktop.ini, thumbs.db, .htaccess etc.) while iterating over the selected items. It may be necessary to implement the ignore list (using MS-DOS-like file masks - for example *.ico, f?ck.txt)</span><sup><a href="#ftnt1" id="ftnt_ref1">[1]</a></sup></li><li class="c11"><span>Launching the program directly (without passing a selection of files/folder) starts the program with template-editing UI. The template(s) may be saved either in windows registry or as file(s) residing in the same folder as the program&rsquo;s executable file.</span></li><li class="c11"><span>Launching the program directly (especially - for the first time) should check whether it is set to run as a service</span><span class="c19">4</span><span>, check the necessary registry keys (for context menu functionality) and set them up if necessary. Modal dialog/alert may be required to display the meaningful message: &ldquo;First run detected. Configuration is complete!&rdquo;</span></li></ul><p class="c2"><span></span></p><h2 class="c13 c29" id="h.dal0197pl26f"><span>Important note</span></h2><p class="c13"><span>Files and folders with a special (i.e administrators) permissions will be not processed until host process, explorer.exe will be restarted with the administrator&#39;s credentials and permissions. These items will be skipped in scan.</span></p><p class="c2"><span></span></p><p class="c2"><span></span></p><p class="c13"> <p class="c2"><span></span></p><p class="c2"><span></span></p><hr class="c27"><div><p class="c8"><a href="#ftnt_ref1" id="ftnt1">[1]</a><span class="c22">&nbsp;Ignored files and folder will not processed at all: i.e. not included in folder total size and items count. You may use regular expressions for the file and folder masks.</span></p></div></body></html>

Installation

This shell extension is using SharpShell project.

To install, run install.cmd from the "Install" directory.

For uninstalling, run uninstall.cmd script.