Folder Info - mIRC

By contr0l on Jul 26, 2015

This will populate a dialog with all folders in a specified folder, and show the size of each folder, to see what's eating up all your HDD space. (Wrote this before windirstat and spacemonger were ever thought of)

on *:load:if ($version < 6.14) { echo -a *** [FolderInfo] needs Mirc 6.14+, Please goto www.mirc.com and update Mirc then reload this addon. Unloading... | unload -rs $script } | else { set %f $fi | echo -a Thx for loading $+([,$fi,]...) Usage: $+(/,$fi) <dir> :: <dir> is optional }
on *:unload:unset %fi.* | var %q = $findfile($"($scriptdirreports),*.txt,0,.remove $1-) | var %qq = $findfile($"($scriptdirreports),*.html,0,.remove $1-) | echo -a Thx for Trying $+([,$fi,])
dialog folderinfo {
  title "[FolderInfo]"
  size -1 -1 230 225
  option dbu
  icon $scriptdiricons\check.ico, 0
  list 1, 1 1 228 223, sort size
  button "", 2, 0 0 0 0
  menu "New", 3
  item "New Folder", 6, 3
  menu "Refresh", 4
  item "Refresh List", 7, 4
  menu "Generate Report", 10
  item ".html", 11, 10
  item ".txt", 12, 10
  item break, 13, 10
  item "Clear Report Files", 14, 10
  item break, 15, 10
  item "Explore Report Files", 16, 10
  menu "Help", 5
  item "Help", 8, 5
  item "About", 9, 5
}
alias -l fmdx { return $"($scriptdirdlls\mdx.dll) }
alias -l f.rs { 
  var %f = $fi | dll $fmdx MoveControl %f 1 1 1 $calc($dialog(%f).w - 10) $calc($dialog(%f).h - 49) 
  did -i %f 1 1 headerdims $calc($dialog(%f).w - 111) $+ :1 81:2
  did -i %f 1 1 headertext Folder $str($chr(160),10) (DoubleClick to Explore) $str($chr(160),15) DragDrop Supported $chr(9) DirSize $chr(9)
}
alias -l f.` { var %f = $fi | if (%fi.xywh) { dialog -s %f -1 -1 $gettok(%fi.xywh,3,32) $gettok(%fi.xywh,4,32) | f.rs } }
alias -l " if ($left($1-,1) != ") && ($right($1-,1) != ") { return $+(",$1-,") } | else return $1-
alias -l % if $isid && $1 isnum && $2 isnum { return $round($calc(($1 / $2) * 100),2) $+ % }
alias -l fi { return FolderInfo }
alias -l c { if $disk(c:) { return c:\ } | else { return $left($scriptdir,3) } }
alias didf { var %f:q = $"($1-) | if ($isdir(%f:q)) { if ($dialog($fi)) { did -a $fi 1 0 1 0 0 %f:q $chr(9) $foldersize($remove(%f:q,"),m).suf } | else break } }
alias -l fload.list {
  if (%f:o) { unset %f:o | return }
  var %f = $fi, %f.ms = did -a %f 1 0 0 0 0 $str(-,35) $chr(9) $str(-,15) | did -r %f 1
  dialog -t %f $+([,%f,]) Calculating Totals for $+($upper($remove(%fi.1,")),$chr(160),...)
  var %t = $finddir($remove(%fi.1,"),*,0,0,didf $1-)
  if ($dialog(%f)) {
    %f.ms | var %f.: = $remove(%fi.1,"), %f.n = $iif($len(%f.:) == 3 || $len(%f.:) == 2,$bytes($calc($disk(%f.:).size - $disk(%f.:).free),g3).suf,$foldersize($remove(%fi.1,"),g).suf) | did -a %f 1 0 2 0 0 $+($str($chr(160),3),Total:,$str($chr(160),5),%fi.1) $chr(9) %f.n
    dialog -t %f $+([,%f,]) for $+([,$remove(%fi.1,"),]) = (Total Usage: %f.n $+ ) | did -c %f 1 $did(%f,1).lines
  }
  unset %f.*
}
alias -l f.genrep {
  did -a $fi 1 0 0 0 0 $str($chr(160),55) Generating Report... | did -c %f 1 $did(%f,1).lines
  var %r = $input(Enter a name for your Text report: $crlf (Don't include extention) $crlf ie: Bleh will create a report named Bleh.txt $crlf (Spaces are fine) $crlf If no name is provided random is.,eo,Report Name)
  if (%r) { %f.file = $"($+($scriptdirreports\,$replace(%r,$chr(32),$chr(46)),.txt)) }
  elseif (!%r) { var %r = $asctime(hhnnss), %f.file = $"($+($scriptdirreports\Folderinfo.Report.,%r,.txt)) }
  write -c %f.file
  write %f.file $+([,$fi,]) on $+([,$remove(%fi.1,"),]) $crlf | write %f.file $str(-,50) $crlf $crlf
  set %f.st none | var %i = 1
  while (%i <= $did($fi,1).lines) {
    var %ffid = $did($fi,1,%i).text 
    if (*Total:* iswm %ffid) {
      set %f.st total
      write %f.file $crlf | write %f.file $str(-,50)
      write %f.file $gettok($remove($gettok(%ffid,6,32),+,fs),1,160) $remove($gettok(%ffid,$numtok(%ffid,32),32),+,fs,0 0 0) $crlf $crlf
    }
    if (%f.st == none) { 
      var %f.m = $remove($gettok($gettok(%ffid,6-,32),1,34),+,fs,0 0 0)
      if ($isdir(%f.m)) { 
        write %f.file $gettok(%f.m,$numtok(%f.m,92),92) $str($chr(160),5) $remove($gettok(%ffid,$numtok(%ffid,32),32),+,fs,0 0 0))
      }
    }
    inc %i
  }
  var %fx = $input(Text Report generated and stored in $crlf $crlf $"($scriptdirReports\) $crlf $crlf Would you like to run? ,yid,Report Done!)
  did -dl $fi 1 $did($fi,1).lines
  if (%fx == $true) { run %f.file } | elseif (%fx == $false) { return }
}
alias -l f.genrephtml {
  did -a $fi 1 0 0 0 0 $str($chr(160),55) Generating Report... | did -c %f 1 $did(%f,1).lines
  var %r = $input(Enter a name for your Html report: $crlf (Don't include extention) $crlf ie: Bleh will create a report named Bleh.html $crlf (Spaces are fine) $crlf If no name is provided random is.,eo,Report Name)
  if (%r) { %f.file = $"($+($scriptdirreports\,$replace(%r,$chr(32),$chr(46)),.html)) }
  elseif (!%r) { var %r = $asctime(hhnnss), %f.file = $"($+($scriptdirreports\Folderinfo.Report.,%r,.html)) }  
  write -c %f.file
  var %. = write %f.file 
  %. <html> | %. $chr(160) | %. <head> | %. <meta http-equiv="Content-Language" content="en-us">
  %. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  %. <title>[ $+ $fi $+ ] on $+([,$remove(%fi.1,"),]) $+ </title> | %. </head> | %. $chr(160)
  %. <body bgcolor="#EFEFEF">
  %. <table border="0" width="100%" id="table1" height="59"> | %. <tr> | %. <td> 
  %. <p align="center"><i><font size="5" face="Arial Black">[ $+ $fi $+ ]</font><font face="Verdana" size="5">
  %. </font></i><font face="Verdana"><i>&nbsp;by: <font size="2">
  %. <a style="text-decoration: none" href="mailto:contrizzle@gmail.com">contr0l</a></font></i></font></td>
  %. </tr> | %. </table> | var %f.dirs = $iif($len($remove(%fi.1,")) == 3 || $len($remove(%fi.1,")) == 2,$bytes($calc($disk($remove(%fi.1,")).size - $disk($remove(%fi.1,")).free),g3).suf,$foldersize($remove(%fi.1,"),g).suf)
  %. <p align="center"><i><font face="Verdana" size="2">Directory Listed: <b> $+ $+([,$remove(%fi.1,"),]) $+ </b> with a Total size of <b> $+ %f.dirs $+ </b></font></i></p>
  %. <hr>
  %. <p align="left"><i><font face="Verdana" size="2"> $+ $str(&nbsp;,30) $+ Directory:  $+ $str(&nbsp;,93) $+ Size:</font></i></p>
  set %f.st none | var %i = 1 
  while (%i <= $did($fi,1).lines) {
    var %ffid = $did($fi,1,%i).text 
    if (*Total:* iswm %ffid) {
      set %f.st total
    }
    if (%f.st == none) { 
      var %f.mm = $remove($gettok($gettok(%ffid,6-,32),1,34),+,fs)
      if ($isdir(%f.mm)) { 
        %. <div align="center">
        %. <table border="1" width="70%" id="table2" bordercolordark="#808080">
        %. <tr>
        %. <td bordercolorlight="#FFFFFF" bordercolordark="#808080" align="center" width="525">
        var %fe = $+(",$gettok(%f.mm,$+($numtok(%f.mm,92)),92),")
        %. $iif($len(%fe) <= 62,%fe,$+($left(%fe,59),$chr(133))) $+ </td>
        %. <td bordercolorlight="#FFFFFF" bordercolordark="#C0C0C0" align="center">
        %. $remove($gettok(%ffid,3,34),+,fs,$+(s,$chr(32)),0 0 0) $+ </td>
        %. </tr> | %. </table> | %. </div>
      }
    }
    inc %i
  }
  %. <p align="center">...................................................................................</p>
  %. <p align="center">Total HD space used for&nbsp; <b> $+ $remove(%fi.1,") </b> $+ is&nbsp; $+ <b> %f.dirs $+ </b> ::
  %. currently using&nbsp; <b> $%($remove(%f.dirs,G,B),$remove($bytes($disk($left($remove(%fi.1,"),3)).size,g3).suf,G,B)) </b> of <b> $upper($left($remove(%fi.1,"),3)) $+ 's <u> $+ $bytes($disk($left($remove(%fi.1,"),3)).size,g3).suf $+ </u></b></p>
  %. <hr>
  %. <p align="right"><font size="2">::Created using [ $+ $fi $+ ]</font>
  %. $crlf | %. </body> | %. </html> | %. $crlf
  var %fx = $input(Html Report generated and stored in $crlf $crlf $"($scriptdirReports\) $crlf $crlf Would you like to run? ,ywd,Report Done!)
  did -dl $fi 1 $did($fi,1).lines
  if (%fx == $true) { run %f.file } | elseif (%fx == $false) { return }

}
alias folderinfo {
  var %f = folderinfo
  if ($1-) {
    if ($isdir($"($1-))) { 
      set %fi.1 $"($1-) | if (!$dialog(%f)) { dialog -m %f %f | f.` } | elseif ($dialog(%f)) { dialog -x %f | dialog -m %f %f | f.` }
    }
    else echo -a $+([,%f,]) - Directory: $"($1-) is not a valid dir! | return
  }
  elseif (!$1-) { set %f:o y | if (!$dialog(%f)) { dialog -m %f %f | f.` } | elseif ($dialog(%f)) { dialog -x %f | dialog -m %f %f | f.` } }
}

; $folderinfo
; Author:        FiberOPtics -- mirc.fiberoptics@gmail.com
; Requirements:  mIRC 6.14 because the dispatch bug was only fixed then.
;                Windows 95/98/NT4.0 + Internetexplorer 4.0
;                Windows 2k/XP/2k3
;
; edited a bit, jus removed error checking

alias foldersize {
  var %size
  if $regex(fsize,$1,/^[a-z]:[\57\134]*$/i) {
    %size = $disk($1).size
  }
  else {
    var %objFso = a $+ $ticks, %objFolder = b $+ $ticks
    .comopen %objFso Scripting.FileSystemObject
    if !$comerr {
      .comclose %objFso $com(%objFso,GetFolder,1,bstr*,$1,dispatch* %objFolder)
      if $com(%objFolder) {
        !.echo -q $com(%objFolder,Size,2)
        %size = $com(%objFolder).result
        .comclose %objFolder
      }
    }
  }
  return $iif($2,$bytes(%size,$2). [ $+ [ $prop ] ],%size)
}
on *:dialog:folderinfo:*:*: {
  var %f = $fi, %f.d = did -i %f 1 1
  if ($devent == init) {
    dll $fmdx SetMircVersion $version
    dll $fmdx MarkDialog $dname
    dll $fmdx SetControlMDX %f 1 listview report single nosortheader droptarget hottrack underlinehot twoclick rowselect showsel > $scriptdirdlls\views.mdx
    dll $fmdx SetControlMDX %f 2 Positioner size minbox maxbox > $scriptdirdlls\dialog.mdx
    %f.d headerdims 355:1 81:2
    %f.d headertext Folder $str($chr(160),10) (DoubleClick to Explore) $str($chr(160),15) DragDrop Supported $chr(9) DirSize $chr(9)
    %f.d seticon normal $scriptdiricons\folder.ico
    %f.d seticon normal $scriptdiricons\check.ico
    dll $fmdx SetBorderStyle 1 staticedge
    if (%fi.xywh) { dll $fmdx SetDialog %f coords %fi.xywh | f.rs }
    if (!%f:o) { .timer 1 .2 fload.list } | unset %f:o
  }
  if ($devent == sclick) {
    if (*sizing* iswm $did(%f,2)) || (*maximize* iswm $did(%f,2)) || (*restore* iswm $did(%f,2)) { f.rs | set %fi.xywh $dialog(%f).x $dialog(%f).y $dialog(%f).w $dialog(%f).h }
    if ($did == 1) {
      if ($gettok($did(1,1),1,32) == drop) {
        did -i $dname 1 1 page dropinfo | tokenize 32 $did(1,1)
        if ($isdir($"($3-))) { folderinfo $3- }
      }
    }
  }
  if ($devent == close) { set %fi.xywh $dialog(%f).x $dialog(%f).y $dialog(%f).w $dialog(%f).h | break }
  if ($devent == dclick) { 
    var %p = $remove($gettok($did(%f,1).seltext,2,34),Total:)
    if ($exists(%p)) { folderinfo $"($gettok($did(%f,1).seltext,2,34)) }
  }
  if ($devent == menu) {
    if ($did == 6) { set %f:i $sdir($iif(%f:i,$ifmatch,$c),Pick a Folder to get Info on...) | if (%f:i) { folderinfo %f:i } } 
    if ($did == 7) { if ($did(%f,1).lines > 1) { folderinfo %fi.1 } }
    if ($did == 8) { run $"($scriptdirFolderInfo.readme.txt) }
    if ($did == 9) { var %ffi = $input($+([,%f,]) $crlf $chr(160) by: contr0l $crlf $crlf Email: contrizzle@gmail.com ,oid,Folder Info About) }
    if ($did == 11) { if ($did(%f,1).lines > 1) { f.genrephtml } }
    if ($did == 12) { if ($did(%f,1).lines > 1) { f.genrep } }
    if ($did == 14) { var %q = $findfile($"($scriptdirreports),*.txt,0,.remove $1-) | var %qq = $findfile($"($scriptdirreports),*.html,0,.remove $1-) | var %qqq = $input($iif(%q && %qq,$calc(%q + %qq),All) Report File(s) Cleared.,oid,Reports Cleared) }
    if ($did == 16) { run $"($scriptdirreports) }
  }
}
menu menubar {
  -
  [- FolderInfo -]
  .Open...
  ..Open:folderinfo
  ..Open with <Dir>:set %f.td $sdir($iif(%f.td,$ifmatch,$c),Pick a Folder to get Info on...) | if (%f.td) { folderinfo %f.td }
  ..-
  .-
  .Unload [FolderInfo] ?:var %sc = $script | var %rusure = $input(You are about to unload [FolderInfo] ... $crlf Forever... $crlf And ever... $crlf Are You Sure?!?!,yhd,Are You Sure?) | if (%rusure == $true) { unload -rs %sc }
  -
}

Comments

Sign in to comment.
contr0l   -  Jul 26, 2015

Dont know how this new Hawkee works. Not sure if I click New Page, or not Post. Nor how to classify as mIRC Script category. Any help is appreciated.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.