The below scripts allows you to select a folder and generate a CSV report detailing the below file properties of all of the file in that folder and the folders sub folders.

 

  • Path
  • Name
  • Size
  • File Type
  • Date Created
  • Date Last Access
  • Date Last Modified

How to use:

1) Download the attached script or copy and save the below as something like report_file_properties.vbs

2) Run the script

3) Use the dialog to browse the folder you want to report on and press OK

4) Wait, the script may that a while to run depending on the number of files in the folder and sub folders. When it is complete you will get a message like the below.

The report will be created in the same directory as the script

5) Press Yes to see the report which should look something like the below.

The script:

Dim objFSO, startFolder, OlderThanDate
 
 
 
'Flags for files
 
Const ForReading = 1
 
Const ForWriting = 2
 
Const ForAppending = 8
 
 
 
' Flags for browse dialog
 
Const BIF_returnonlyfsdirs   = &H0001
 
Const BIF_dontgobelowdomain  = &H0002
 
Const BIF_statustext         = &H0004
 
Const BIF_returnfsancestors  = &H0008
 
Const BIF_editbox            = &H0010
 
Const BIF_validate           = &H0020
 
Const BIF_browseforcomputer  = &H1000
 
Const BIF_browseforprinter   = &H2000
 
Const BIF_browseincludefiles = &H4000
 
 
 
currentScriptPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "") 
 
 
 
reportFile = currentScriptPath & "FilePropertiesReport.csv"
 
 
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Set objDlg = WScript.CreateObject("Shell.Application")
 
Set objShell = CreateObject("WScript.Shell")
 
 
 
' Use the BrowseForFolder method.
 
Set objStartFolder = objDlg.BrowseForFolder (&H0, _
 
    "Select the folder you want to report on, su folder will also be reported", BIF_editbox + BIF_returnonlyfsdirs)
 
 
 
' Here we use TypeName to detect the result.
 
If InStr(1, TypeName(objStartFolder), "Folder") > 0 Then
 
	startFolder = objStartFolder.ParentFolder.ParseName(objStartFolder.Title).Path
 
 
 
	'Create report file and add CSV Header
 
	Set objReportFile = objFSO.CreateTextFile(reportfile, ForWriting)
 
	objReportFile.Write("Path, Name, Size (kb), Type, Date Created, Date Last Accessed, Date Laste Modified"  & chr(13) & chr(10))
 
 
 
	'Run the function
 
	ReportFiles startFolder
 
 
 
	'Close the report
 
	objReportFile.Close
 
 
 
	'Ask to open the report now or just close
 
	strMbox = MsgBox("Reporting Complete. " & chr(13) & chr(10) &"The report has been saved to: " & reportFile & chr(13) & chr(10) & chr(13) & chr(10) & "Would you like to open the report now?",4,"Open report now?")
 
 
 
	if strMbox = 6 Then
 
		objShell.Run reportFile
 
	End if
 
 
 
Else
 
	MsgBox "An error has occured."
 
End if
 
 
 
'----------------------------------------------
 
' Function
 
'----------------------------------------------
 
Function ReportFiles(folderName)
 
   Dim objFolder, objFile, fileCollection, folderCollection, subFolder
 
 
 
   Set objFolder = objFSO.GetFolder(folderName)
 
   Set fileCollection = objFolder.Files
 
 
 
   For Each objFile In fileCollection
 
		strFilePath = chr(34) & objFile.Path & chr(34)
 
		strFileName = chr(34) & objFile.Name & chr(34)
 
		strFileSize = objFile.Size / 1024
 
		strFileType = chr(34) & objFile.Type & chr(34)
 
		strFileDateCreated = objFile.DateCreated
 
		strFileDateLastAccessed = objFile.DateLastAccessed
 
		strFileDateLastModified = objFile.DateLastModified
 
 
 
		objReportFile.Write(strFilePath & "," & strFileName & "," & strFileSize & "," & strFileType & "," & strFileDateCreated & "," & strFileDateLastAccessed & "," & strFileDateLastModified & chr(13) & chr(10))
 
   Next
 
 
 
	'Loop for each sub folder
 
    Set folderCollection = objFolder.SubFolders
 
    For Each subFolder In folderCollection
 
       ReportFiles subFolder.Path
 
    Next
 
End Function