Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Getting accurate folder details

Posted on 2009-07-16
12
Medium Priority
?
393 Views
Last Modified: 2012-05-07
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
Comment
Question by:sirbounty
  • 6
  • 5
12 Comments
 
LVL 76

Expert Comment

by:David Lee
ID: 24873117
Hi, SB.

Are you looping through all of the folders to get eh information or jsut reading the top level folder?
0
 
LVL 76

Expert Comment

by:David Lee
ID: 24873122
Geez, pardon all the typos.  My fingers and brain don't always talk to each other.
0
 
LVL 67

Author Comment

by:sirbounty
ID: 24873887
Np - I've just been reading the top level.  I thought it 'had' worked in the past...now I'm not so sure... : (
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 76

Expert Comment

by:David Lee
ID: 24874438
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
 
LVL 67

Author Comment

by:sirbounty
ID: 24875092
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
 
LVL 76

Accepted Solution

by:
David Lee earned 1200 total points
ID: 24875190
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
 
LVL 10

Expert Comment

by:Alan_White
ID: 24876657
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
 
LVL 67

Author Comment

by:sirbounty
ID: 24881693
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
 
LVL 76

Expert Comment

by:David Lee
ID: 24885847
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
 
LVL 67

Author Comment

by:sirbounty
ID: 24913958
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
 
LVL 67

Author Closing Comment

by:sirbounty
ID: 31604358
Thanks for the help!
0
 
LVL 76

Expert Comment

by:David Lee
ID: 24914922
No problem.  You're welcome!
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve t…
In real business world data are crucial and sometimes data are shared among different information systems. Hence, an agreeable file transfer protocol need to be established.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
Suggested Courses

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question