Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 395
  • Last Modified:

Getting accurate folder details

I have a script to read in a list of folders and for each one processed, try and retrieve the size of the folder, as well as number of files/folders contained therein (the exact results in a right-click property window on the folder would be ideal).

However, it seems using fso, I can't get accurate results.  One folder I'm testing against shows nearly 30mb with nearly 2000 files contained in over 300 folders.  My report shows the size (not the 'size on disk' - would love to have both), but only shows 3 folders and 0 for files...

Is there a reliable method to pull these details?
0
sirbounty
Asked:
sirbounty
  • 6
  • 5
1 Solution
 
David LeeCommented:
Hi, SB.

Are you looping through all of the folders to get eh information or jsut reading the top level folder?
0
 
David LeeCommented:
Geez, pardon all the typos.  My fingers and brain don't always talk to each other.
0
 
sirbountyAuthor Commented:
Np - I've just been reading the top level.  I thought it 'had' worked in the past...now I'm not so sure... : (
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
David LeeCommented:
I don't think there's a way to do this without iterating through the folders.  Even Explorer does that.  It does it a lot faster, but it still does it.
0
 
sirbountyAuthor Commented:
Hmm - so I basically need some sort of counter for the files/folders then...  I think the size is actually correct for the entire folder though...
0
 
David LeeCommented:
Something like this will do it.
Dim objFSO, varFiles, varFolders, varSize
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
varFolders = -1
ProcessFolder objFSO.GetFolder("C:\SomeFolder")
Set objFSO = Nothing
'Code for doing something with the results goes here'
WScript.Quit
 
Sub ProcessFolder(objFolder)
    Dim objFile, objSubFolder
    For Each objFile In objFolder.Files
        varFiles = varFiles + 1
        varSize = varSize + objFile.Size
    Next
    varFolders = varFolders + 1
    For Each objSubFolder In objFolder.SubFolders
        ProcessFolder objSubFolder
    Next
    Set objFile = Nothing
    Set objSubFolder = Nothing
End Sub

Open in new window

0
 
Alan_WhiteCommented:
Yeah, the folder size works at top level (and very efficiently too) but if you want file count you have to trawl though each one.
0
 
sirbountyAuthor Commented:
BDF - I'm off today, so I'll check this out on Monday.
Doesn't seem like I need to iterate the contents for size tho - I think that works fine as-is...this will still save me a bit of coding though - thanks.
0
 
David LeeCommented:
No problem.  

If there's no need to total up the size, then we can modify the code and skip iterating the files.  That should speed this up a little.
Dim objFSO, varFiles, varFolders
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
varFolders = -1
ProcessFolder objFSO.GetFolder("C:\Users\David\Documents\Excel")
Set objFSO = Nothing
 
Sub ProcessFolder(objFolder)
    Dim objSubFolder
    varFiles = varFiles + objFolder.Files.count
    varFolders = varFolders + 1
    For Each objSubFolder In objFolder.SubFolders
        ProcessFolder objSubFolder
    Next
    Set objFile = Nothing
    Set objSubFolder = Nothing
End Sub

Open in new window

0
 
sirbountyAuthor Commented:
Sorry for the delay - running into some permission problems.
It's of course something that shouldn't be a problem, but for whatever reason, it occasionally is.
I hate to simply ignore those folders, so I'm presently working on something to find and correct the problem before processing the folder.
Whether I can or cannot get this working though, I'll close this out shortly, because it is giving me what I need on the 'working' folders.  Thanks!
0
 
sirbountyAuthor Commented:
Thanks for the help!
0
 
David LeeCommented:
No problem.  You're welcome!
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now