VBS Script to export the file properties of all files in a folder and its sub folders

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

 

4 thoughts on “VBS Script to export the file properties of all files in a folder and its sub folders”

  1. Sorry, if I’ve commented twice on this – but I was wondering how the script might be modified to add properties, such as GPS location from a JPEG file in particular, to the fields that are exported to the CSV file.

    Reply
  2. Hi,

    You’re fantastic! I’m wondering if you could add the document property “Title” to the script AND if a user could populate the “Title” field in the report, created by your script AND have the report imported back into the folder, to update the “title” document property for all the files.

    Is this asking too much? 🙂

    Reply
  3. This script worked for most of the folders but for a folder which had user profiles it is throwing an error for the below line in the script.

    Line for which script is throwing error
    objReportFile.Write(strFilePath & "," & strFileName & "," & strFileSize & "," & strFileType & "," & strFileDateCreated & "," & strFileDateLastAccessed & "," & strFileDateLastModified & chr(13) & chr(10))

    Error
    Folder-File-Details.vbs(144, 1) Microsoft VBScript runtime error: Invalid procedure call or argument

    I also tried to run the script with Cscript with a admin CMD window.

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.