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.
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
- Run the .HTA once.. it will create 2 files for you
- “Computers.ini” which you will will need to edit to contain 1 slave computer per line in it (either IP address or computer Name work, use 127.0.0.1 for your local system)
- “SlaveutilsOptions.ini” which will have slots for various paths and options. read the file and edit the lines accordingly.
- (Path to your VNC client,
- whether to use alternate credentials or not,
- and what the login/password would be if you did use them.
Note: Its been brought to my attention that some virus scanners will flag this download (Understandably in my opinion) as ‘Greyware’ because it contains VBScript that uses the WMI (Windows Management Interface) to affect changes to remote computers, enclosed in an HTA (Read: Executable Webpage). the full code is in there and easily readable.
I’ve been experimenting with a few other ways to package it, either via Maxscript, or Python, but they tend to get constrained to ‘free’ time as this functions perfectly