This is the 2nd Tip in a series of Tips on the Microsoft Scripting Runtime Library. The 1st Tip related to Drives, while this Tip will concentrate on the Folders (Directories) in your PC and various methods to retrieve information from and how to manipulate them. The code should be self explanatory and basically documents itself. Should there be any questions related to this Topic, please feel free to ask.
[CODE=vb]
'Accessing Folder Properties
Dim fso As FileSystemObjec t, fldr As Folder
Set fso = New Scripting.FileS ystemObject 'OR
'Set fso = CreateObject("S cripting.FileSy stemObject")
'Creates an Instance of a Folder
Set fldr = fso.GetFolder(" C:\Windows\Syst em32")
Debug.Print "Folder Properties of " & fldr.Path
Debug.Print " Folder Name: " & fldr.Name
Debug.Print " Folder Size: " & FormatNumber(fl dr.Size, 0, vbFalse, vbFalse, vbTrue) & " bytes"
Debug.Print " Folder Created: " & fldr.DateCreate d
Debug.Print " Folder Path: " & fldr.Path
Debug.Print " Folder Last Modified: " & fldr.DateLastMo dified
Debug.Print " Folder Last Accessed: " & fldr.DateLastAc cessed
Debug.Print " Folder Drive: " & fldr.Drive
Debug.Print " Files in Folder: " & FormatNumber(fl dr.Files.Count, 0, vbFalse, vbFalse, vbTrue) & " files"
Debug.Print " Is this a Root Folder: " & fldr.IsRootFold er
Debug.Print " Parent Folder: " & fldr.ParentFold er
Debug.Print " Folder Path: " & fldr.Path
'Could also use the GetBaseName Method of the File System Object
Debug.Print " Folder Short Name: " & fldr.ShortName
Debug.Print " Folder Short Path: " & fldr.ShortPath
Debug.Print " Number of Sub-Folders: " & fldr.SubFolders .Count
Debug.Print " Folder Type: " & fldr.Type
Debug.Print
'Code that creates a Temporary Folder (fso previously created)
Dim msTemporaryFold er As String
msTemporaryFold er = fso.GetSpecialF older(Temporary Folder).Path & "\"
Debug.Print msTemporaryFold er
Debug.Print
'Code to see if a Folder exists (fso previously created)
'Could also use the FolderExists Method of the File System Object
If fso.FolderExist s("C:\Test") Then
Debug.Print "Folder exists"
Else
Debug.Print "Folder does not exist"
End If
Debug.Print
'Code to create a Folder (fso previously created)
'Could also use the CreateFolder Method of the File System Object
Set fldr = fso.CreateFolde r("C:\Windows\S ystem32\Temp Extraction Area")
Debug.Print "Created Folder " & fldr.Name
'Code to Delete a Folder (fso previously created)
'Could also use the DeleteFolder Method of the File System Object
Set fldr = fso.GetFolder(" C:\Folder 1\Folder 2\Folder to Delete")
fldr.Delete True '"Folder to Delete" is Deleted
'Code to Move a Folder (fso previously created)
'Could also use the MoveFolder Method of the File System Object
Set fldr = fso.GetFolder(" C:\Folder1\Fold er2\Folder3")
fldr.Move "C:\" '"Folder3" moved to C:\
'Code to Copy a Folder (fso previously created)
'Could also use the CopyFolder Method of the File System Object
Set fldr = fso.GetFolder(" C:\Folder1\Fold er2")
fldr.Copy "C:\List", True 'Copies "Folder2" to C:\List[/CODE]
OUTPUT:
[CODE=text]
Folder Properties of C:\WINDOWS\syst em32
Folder Name: system32
Folder Size: 888,994,639 bytes
Folder Created: 10/1/2005 2:46:52 AM
Folder Path: C:\WINDOWS\syst em32
Folder Last Modified: 2/5/2008 7:04:21 PM
Folder Last Accessed: 2/5/2008 7:04:22 PM
Folder Drive: C:
Files in Folder: 2,309 files
Is this a Root Folder: False
Parent Folder: C:\WINDOWS
Folder Path: C:\WINDOWS\syst em32
Folder Short Name: System32
Folder Short Path: C:\Windows\Syst em32
Number of Sub-Folders: 50
Folder Type: File Folder
C:\DOCUME~1\Arm und\LOCALS~1\Te mp\
Folder exists
Created Folder Temp Extraction Area[/CODE]
[CODE=vb]
'Accessing Folder Properties
Dim fso As FileSystemObjec t, fldr As Folder
Set fso = New Scripting.FileS ystemObject 'OR
'Set fso = CreateObject("S cripting.FileSy stemObject")
'Creates an Instance of a Folder
Set fldr = fso.GetFolder(" C:\Windows\Syst em32")
Debug.Print "Folder Properties of " & fldr.Path
Debug.Print " Folder Name: " & fldr.Name
Debug.Print " Folder Size: " & FormatNumber(fl dr.Size, 0, vbFalse, vbFalse, vbTrue) & " bytes"
Debug.Print " Folder Created: " & fldr.DateCreate d
Debug.Print " Folder Path: " & fldr.Path
Debug.Print " Folder Last Modified: " & fldr.DateLastMo dified
Debug.Print " Folder Last Accessed: " & fldr.DateLastAc cessed
Debug.Print " Folder Drive: " & fldr.Drive
Debug.Print " Files in Folder: " & FormatNumber(fl dr.Files.Count, 0, vbFalse, vbFalse, vbTrue) & " files"
Debug.Print " Is this a Root Folder: " & fldr.IsRootFold er
Debug.Print " Parent Folder: " & fldr.ParentFold er
Debug.Print " Folder Path: " & fldr.Path
'Could also use the GetBaseName Method of the File System Object
Debug.Print " Folder Short Name: " & fldr.ShortName
Debug.Print " Folder Short Path: " & fldr.ShortPath
Debug.Print " Number of Sub-Folders: " & fldr.SubFolders .Count
Debug.Print " Folder Type: " & fldr.Type
Debug.Print
'Code that creates a Temporary Folder (fso previously created)
Dim msTemporaryFold er As String
msTemporaryFold er = fso.GetSpecialF older(Temporary Folder).Path & "\"
Debug.Print msTemporaryFold er
Debug.Print
'Code to see if a Folder exists (fso previously created)
'Could also use the FolderExists Method of the File System Object
If fso.FolderExist s("C:\Test") Then
Debug.Print "Folder exists"
Else
Debug.Print "Folder does not exist"
End If
Debug.Print
'Code to create a Folder (fso previously created)
'Could also use the CreateFolder Method of the File System Object
Set fldr = fso.CreateFolde r("C:\Windows\S ystem32\Temp Extraction Area")
Debug.Print "Created Folder " & fldr.Name
'Code to Delete a Folder (fso previously created)
'Could also use the DeleteFolder Method of the File System Object
Set fldr = fso.GetFolder(" C:\Folder 1\Folder 2\Folder to Delete")
fldr.Delete True '"Folder to Delete" is Deleted
'Code to Move a Folder (fso previously created)
'Could also use the MoveFolder Method of the File System Object
Set fldr = fso.GetFolder(" C:\Folder1\Fold er2\Folder3")
fldr.Move "C:\" '"Folder3" moved to C:\
'Code to Copy a Folder (fso previously created)
'Could also use the CopyFolder Method of the File System Object
Set fldr = fso.GetFolder(" C:\Folder1\Fold er2")
fldr.Copy "C:\List", True 'Copies "Folder2" to C:\List[/CODE]
OUTPUT:
[CODE=text]
Folder Properties of C:\WINDOWS\syst em32
Folder Name: system32
Folder Size: 888,994,639 bytes
Folder Created: 10/1/2005 2:46:52 AM
Folder Path: C:\WINDOWS\syst em32
Folder Last Modified: 2/5/2008 7:04:21 PM
Folder Last Accessed: 2/5/2008 7:04:22 PM
Folder Drive: C:
Files in Folder: 2,309 files
Is this a Root Folder: False
Parent Folder: C:\WINDOWS
Folder Path: C:\WINDOWS\syst em32
Folder Short Name: System32
Folder Short Path: C:\Windows\Syst em32
Number of Sub-Folders: 50
Folder Type: File Folder
C:\DOCUME~1\Arm und\LOCALS~1\Te mp\
Folder exists
Created Folder Temp Extraction Area[/CODE]