vbscript
Recursive file size listing output to excel
by Dave Buchhofer on Dec.30, 2009, under Admin, Batching, Scripting, vbscript
Today I had to find all JPG files over a certain size in a large directory tree of a few thousand images, to find some poorly compressed jpg’s, fix the compression, and replace them on a website. Todays cavaet, the CMS is pretty weak and only lets you update 1 image at a time, so you can’t just blindly resave everything and reupload, todays Second cavaet, I dont have server level access to said website, so all the normal automated ways are out of luck.
joy.
So I found a little snip of code online, and threw a pretty simple hack job together to narrow the scope some. (PS: If you do end up doing any vbscript, I’d suggest VbsEdit for an IDE)
Anyway! the code:
It searches through a directory tree of your choosing
for any file matching the filetype: “jpg”
that is above a size threshold: fileSizeThreshold (In this case, 2kb.. so essentially everything)
and outputs it into an excell sheet with full path and size information
so that you can easily Sort, Filter, Delegate, or use as data for further automating!
' // **************************************
' // ComputerHighGuys recursive search
' //
' // Date Created: 20 Aug 07
' // http://www.tek-tips.com/faqs.cfm?fid=6716
' //
' // Adjusted to a jpg file search and
' // added excel output for easy sorting/filtering
' //
' // **************************************
' // If we'd like to save the output into an excel sheet
WriteExcel = "True"
Dim objexcel
excelRow=2
' // value the filesize needs to exceed to be visible in the output
fileSizeThreshold=2
If WriteExcel = "True" Then
' // Create the Excel sheet to drop the information into
Set objExcel = createobject("Excel.application")
objexcel.Workbooks.add
objexcel.Cells(1, 1).Value = "Folder Name"
objexcel.Cells(1, 2).Value = "Filename"
objexcel.Cells(1, 3).Value = "Filesize"
objexcel.Cells(1, 4).Value = "Filesize Unit"
objexcel.Visible = True
Wscript.Sleep 300
End If
' // Directory to search
searchDir = "C:\"
set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(searchDir)
Set colFiles = objFolder.Files
' // Launch the function
ScanSubFolders(objFolder)
' // recursive function that will search through all subfolders for a specified
' // filetype and output some information about the files to an Excel Sheel
Sub scanSubFolders(objFolder)
' // Grab sub folders
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
' // the files to search
Set colFiles = objSubFolder.Files
For Each objFile in colFiles
' // the extension of the filetype to search for
If lcase(Right(objFile.Name,3)) = "jpg" Then
' // Getting File size in KB
If round(objFile.Size/1024,1) > fileSizeThreshold Then
' // echo the files to the console
WScript.Echo objSubFolder.Path & " " & objFile.Name & " " & round(objFile.Size/1024,1) & "KB"
' // write various shit to excel~
If WriteExcel = "True" then
wscript.Echo objSubFolder.Path & " " & objFile.Name & " " & round(objFile.Size/1024,1) & "KB"
objexcel.Cells(excelRow, 1).Value = objSubFolder.Path
objexcel.Cells(excelRow, 2).Value = objFile.Name
objexcel.Cells(excelRow, 3).Value = round(objFile.Size/1024,1)
objexcel.Cells(excelRow, 4).Value = "KB"
excelRow=excelRow+1
End If
End if
End If
Next
ScanSubFolders(objSubFolder)
Next
End Sub










