Jump to content

Script to find folders and report name and size (MB)


schilbiz
 Share

Recommended Posts

Hey guys I am wondering if there is a function that will read the contents of a specific location and output a list of the folder names and the size.

Like if it searched \\server\ and the below folders were in there. It would read out:

Users 1.5g

Misc 350.45mb

Name 3g

Etc.. I have been looking in the Helpfiles but have not located the function that would do this.

As always thanks for your help.

Link to comment
Share on other sites

Hey guys I am wondering if there is a function that will read the contents of a specific location and output a list of the folder names and the size.

Like if it searched \\server\ and the below folders were in there. It would read out:

Users 1.5g

Misc 350.45mb

Name 3g

Etc.. I have been looking in the Helpfiles but have not located the function that would do this.

As always thanks for your help.

By far, the coolest (graphical) version of that ever made is OverDisk.

To do it in AutoIt would require _FileListToArray() and a recursive search function to tally up the file sizes. There are many recursive searches already posted on the forums.

:P

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

By far, the coolest (graphical) version of that ever made is OverDisk.

To do it in AutoIt would require _FileListToArray() and a recursive search function to tally up the file sizes. There are many recursive searches already posted on the forums.

:P

Thanks a lot Psalty, my job just got a whole lot easier. OverDisk does work pretty good, and I will search the forums to see what other people have come up with. I will also look at _FileListToArray(), I was looking for a _FolderListToArray and didn't find anything of that sort.

Again, Thanks

Link to comment
Share on other sites

Thanks a lot Psalty, my job just got a whole lot easier. OverDisk does work pretty good, and I will search the forums to see what other people have come up with. I will also look at _FileListToArray(), I was looking for a _FolderListToArray and didn't find anything of that sort.

Again, Thanks

From the help file for _FileListToArray():

Parameters

$sPath Path to generate filelist for.

$sFilter Optional the filter to use, default is *. Search the Autoit3 helpfile for the word "WildCards" For details.

$iFlag Optional: specifies wheather to return files folders or both

$iFlag=0(Default) Return both files and folders

$iFlag=1 Return files only

$iFlag=2 Return Folders only

:P

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

I put this together and it gives me a readout of all the Folder names.

What would I change in the code to have it read folder size as well?

#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray("\\server\data", "*.*", 2)
If (Not IsArray($FileList)) and (@Error=1) Then
MsgBox (0,"","No Folders Located.")
Exit
EndIf
_ArrayDisplay($FileList,"$FileList")
Link to comment
Share on other sites

I imagine it would use this function

$size = FileGetSize("AutoIt.exe")oÝ÷ ÛZ¶«jg­z»0¢é]"ëjwpêÞÂ¥t¬z+bØb±Êy«­¢+Ø%¹±Õ±Ðí¥±¹ÔÌÐì(%¹±Õ±ÐíÉÉä¹ÔÌÐì(ÀÌØí¥±1¥ÍÐõ}¥±1¥ÍÑQ½ÉÉä ÅÕ½ÐìÀäÈìÀäÈíÍÉÙÈÀäÈíÑÅÕ½Ðì°ÅÕ½Ð쨸¨ÅÕ½Ðì°È¤)%¡9½Ð%ÍÉÉä ÀÌØí¥±1¥ÍФ¤¹¡ÉɽÈôĤQ¡¸)5Í  ½à À°ÅÕ½ÐìÅÕ½Ðì°ÅÕ½Ðí9¼½±ÉÌ1½Ñ¸ÅÕ½Ðì¤)á¥Ð)¹%)}ÉÉå¥ÍÁ±ä ÀÌØí¥±1¥ÍаÅÕ½ÐìÀÌØí¥±1¥ÍÐÅÕ½Ðì¤

I apologize for the simple questions but I am real new to AutoIt and unfortunetly I am not in a place where I can test and try out things without endangering the integrity of the servers/workplace.

I will deffinetly play with it more when I get home.

Edited by schilbiz
Link to comment
Share on other sites

Here's something to play with.

This opens an instance of Explorer to the parent folder, selects the subfolder, opens its properties, waits for the property page text to stop updating (for a big folder this can take a while), and the extracts the results from the window text:

Opt("WinTitleMatchMode", 4)

$sDir = "C:\Program Files"
$sSubDir = "AutoIt3"

; Open parent window
ShellExecute($sDir & "\")
WinWait("[CLASS:CabinetWClass; Title:" & $sDir & "]")
$hWin = WinGetHandle("[CLASS:CabinetWClass; Title:" & $sDir & "]")
WinActivate($hWin)
WinWaitActive($hWin)

; Select subdirectory
ControlSend($hWin, "", "[CLASSNN:SysListView321]", $sSubDir)

; Open properties of subdirectory
ControlSend($hWin, "", "", "!fr")
WinWait("[CLASS:#32770; TITLE:" & $sSubDir & " Properties]")
$hSubWin = WinGetHandle("[CLASS:#32770; TITLE:" & $sSubDir & " Properties]")
WinActivate($hSubWin)
WinWaitActive($hSubWin)

; Wait for updates to stop for at least 3sec
$sText = WinGetText($hSubWin)
While 1
    Sleep(3000) ; 3 sec delay
    If $sText = WinGetText($hSubWin) Then ExitLoop
    $sText = WinGetText($hSubWin)
WEnd
ControlClick($hSubWin, "", "[CLASS:Button; TEXT:OK]") ; Click OK

$avText = StringSplit($sText, @LF)
$sSize = ""
For $n = 1 To $avText[0]
    If StringInStr($avText[$n], "Size:") Then
        $sSize = $avText[$n + 1]
        ExitLoop
    EndIf
Next

MsgBox(64, "Results", "Size of " & $sDir & "\" & $sSubDir & "\ = " & $sSize)

Enjoy...

:P

Edited by PsaltyDS
Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

I can name that tune in nine lines:

$fso = ObjCreate("Scripting.FileSystemObject")

$oRootFolder = $fso.GetFolder("C:\")
$oFolders = $oRootFolder.SubFolders

ConsoleWrite("There are " & $oFolders.count & " folders" & @CR)

For $oFolder in $oFolders
    If $oFolder.name = "System Volume Information" then ContinueLoop; Special folder, skip
    ConsoleWrite(@TAB & "Size of " & $oFolder.name & " = " & $oFolder.size & " bytes" & @CR)
Next

Dale

Free Internet Tools: DebugBar, AutoIt IE Builder, HTTP UDF, MODIV2, IE Developer Toolbar, IEDocMon, Fiddler, HTML Validator, WGet, curl

MSDN docs: InternetExplorer Object, Document Object, Overviews and Tutorials, DHTML Objects, DHTML Events, WinHttpRequest, XmlHttpRequest, Cross-Frame Scripting, Office object model

Automate input type=file (Related)

Alternative to _IECreateEmbedded? better: _IECreatePseudoEmbedded  Better Better?

IE.au3 issues with Vista - Workarounds

SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y

Doesn't work needs to be ripped out of the troubleshooting lexicon. It means that what you tried did not produce the results you expected. It begs the questions 1) what did you try?, 2) what did you expect? and 3) what happened instead?

Reproducer: a small (the smallest?) piece of stand-alone code that demonstrates your trouble

Link to comment
Share on other sites

I can name that tune in nine lines:

$fso = ObjCreate("Scripting.FileSystemObject")

$oRootFolder = $fso.GetFolder("C:\")
$oFolders = $oRootFolder.SubFolders

ConsoleWrite("There are " & $oFolders.count & " folders" & @CR)

For $oFolder in $oFolders
    If $oFolder.name = "System Volume Information" then ContinueLoop; Special folder, skip
    ConsoleWrite(@TAB & "Size of " & $oFolder.name & " = " & $oFolder.size & " bytes" & @CR)
Next

Dale

Excellent! Thanks Dale! I poked around in Scriptomatic looking for a WMI interface like that, sure I had seen it before. Didn't think to look at the scripting interface. That loop crashes when it hits Documents and Settings on mine, but it's tweakable.

:P

P.S. Tested on another machine just fine, probably a user folder on the other one I don't have perms for.

Edited by PsaltyDS
Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...