WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Directory and Deltree UDFs

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Check Directory Sizes

 Keywords: Get size subdirectories directory 

Sample Code:

;*******************************************************************************************************

;** Name:       MultDirSize

;** Author:     Marc Worrel

;** Version:    1.0    

;** Purpose:    Get size of all subdirectories in a given directory

;** Inputs:     Start directory

;** Outputs:    

;** Revisions:   

;** Date:       01/14/2002

;*******************************************************************************************************

;///////////////////////////////////// SPACER TO SEPARATE SECTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

; Set environmental information and initial variables   |

;-------------------------------------------------------- 



IntControl(12,1+4,0,0,0)                                   ;Suppress OK to close messages

IntControl (49,1,0,0,0)                                    ;Enables Min/Max/Close Widgets

IntControl (1008,1,0,0,0)                                  ;Enables Close command



Result=""

Decimals (2)                                               ;Round to nearest hundredth

StartDir="C:\Program Files"

Format=StrCat ("Bytes",@TAB,"Kilobytes",@TAB,"Megabytes",@TAB,"Gigabytes")

;*******************************************************************************************************

;///////////////////////////////////// SPACER TO SEPARATE SECTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

;                                                       |

;-------------------------------------------------------- 

#DefineSubRoutine DlgCallback (DlgName,DlgEvent,DlgCtrl,Res4,Res5)

If DlgEvent==0                                             ;Dialog initialization 

   DialogProcOptions (DlgName,2,1)                         ;Watch for button presses

   ;Disable Maximize widget

   hwnd=DllHwnd("")                                        ;Window Title of desired window goes here

   sysmenu=DllCall(StrCat(DirWindows(1),"User32.dll"),long:"GetSystemMenu",long:hwnd,long:0)

   DllCall (StrCat(DirWindows(1),"User32.dll"),long:"RemoveMenu",long:sysmenu,long:61488,long:0)   ;Remove maximize from system menu

   OldStyle=DllCall(StrCat(DirWindows(1),"User32.dll"),long:"GetWindowLongA",long:hwnd,long:-16)

   NewStyle=OldStyle & ~65536                              ;Disable Maximize widget

   SetWindow=DllCall(StrCat(DirWindows(1),"User32.dll"),long:"SetWindowLongA",long:hwnd,long:-16,long:NewStyle)

EndIf

If DlgEvent==2                                             ;Button press event

   If DlgCtrl==001                                         ;Get Size button was pressed

      DialogProcOptions (DlgName,1000,2)                   ;Disable dialog and set Wait cursor 

      StartDir=DialogControlGet(DlgName,007,3)             ;Get start directory

      DirList=DirItemize (StrCat(StartDir,"\*.*"))         ;Get list of subdirectories

      Format=DialogControlGet (DlgName,006,6)              ;Get size format

      If Format=="Bytes" Then Multiplier=1                 

      If Format=="Kilobytes" Then Multiplier=0.0009765625                     

      If Format=="Megabytes" Then Multiplier=0.00000095367431640625           

      If Format=="Gigabytes" Then Multiplier=0.000000000931322574615478515625

      Result=""                                            ;Reset results list for next query 

      For EachDir=1 To ItemCount (DirList,@TAB)            ;Determine how many loops to make

         ThisDir=ItemExtract (EachDir,DirList,@TAB)        

         ThisDirSize=DirSize (StrCat(StartDir,"\",ThisDir),0)

         ThisDirSize=StrFixLeft(ThisDirSize*Multiplier," ",10)  ;Keep size column right aligned

         ThisDir=StrFixChars (ThisDir," ",40)              ;Pad name column so sizes line up

         Result=StrCat (Result,ThisDir,ThisDirSize,@TAB)   ;Add subdirectory name and size to result list

      Next

      DialogControlSet (DlgName,008,5,Result)              ;Display results list in Itembox

      DialogProcOptions (DlgName,1000,0)                   ;Re-enable dialog

   EndIf

   If DlgCtrl==002 Then Exit                               ;Exit button pressed

   If DlgCtrl==003                                         ;Browse button pressed

      StartDir=AskDirectory("Select directory to examine","",StartDir,"",0)    ;Browse for new start directory 

      DialogControlSet (DlgName,007,3,StartDir)            ;Update Editbox with new start directory

   EndIf

EndIf

Return (-2)                                                ;Return (-1) for normal processing or (-2) for persistant dialog

#EndSubRoutine



DirSizesFormat=`WWWDLGED,6.1`

DirSizesCaption=`Check Directory Sizes`

DirSizesX=015

DirSizesY=070

DirSizesWidth=302

DirSizesHeight=148

DirSizesNumControls=008

DirSizesProcedure=`DlgCallback`

DirSizesFont=`DEFAULT`

DirSizesTextColor=`DEFAULT`

DirSizesBackground=`DEFAULT,DEFAULT`

DirSizesConfig=1

DirSizes001=`077,127,036,012,PUSHBUTTON,DEFAULT,"&Get Size",1,5,32,DEFAULT,DEFAULT,DEFAULT`

DirSizes002=`189,127,036,012,PUSHBUTTON,DEFAULT,"E&xit",0,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

DirSizes003=`258,003,036,012,PUSHBUTTON,DEFAULT,"&Browse",2,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

DirSizes004=`005,005,040,008,STATICTEXT,DEFAULT,"Display sizes in:",DEFAULT,7,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

DirSizes005=`103,005,022,008,STATICTEXT,DEFAULT,"&Start Dir:",DEFAULT,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

DirSizes006=`045,003,038,050,DROPLISTBOX,Format,"Megabytes",DEFAULT,8,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

DirSizes007=`128,003,126,012,EDITBOX,StartDir,DEFAULT,DEFAULT,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

DirSizes008=`004,019,291,102,ITEMBOX,Result,DEFAULT,DEFAULT,4,DEFAULT,"Courier|5632|40|49","0|0|0",DEFAULT`

DirSizesButtonPushed=Dialog("DirSizes",1)



Exit


Article ID:   W15746
File Created: 2003:05:13:11:29:54
Last Updated: 2003:05:13:11:29:54