Vbscript - Checking each subfolder for files and copy files
- by Kenny Bones
I'm trying to get this script to work.
It's basically supposed to mirror two sets of folders and make sure they are exactly the same. If a folder is missing, the folder and it's content should be copied.
Then the script should compare the DateModified attribute and only copy the files if the source file is newer than the destination file.
I'm trying to get together a script that does exactly that. And so far I've been able to check all subfolder if they exist and then create them if they don't.
Then I've been able to scan the top source folder for it's files and copy them if they don't exist or if the DateModified attribute is newer on the source file.
What remains is basically scanning each subfolder for its files and copy them if they don't exist or if the DateModified stamp is newer.
Here's the code:
Dim strSourceFolder, strDestFolder
strSourceFolder = "c:\users\vegsan\desktop\Source\"
strDestFolder = "c:\users\vegsan\desktop\Dest\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set objTopFolder = fso.GetFolder(strSourceFolder)
Set colTopFiles = objTopFolder.Files
'Check to see if subfolders actually exist. Create if they don't
Set objColFolders = objTopFolder.SubFolders
For Each subFolder in objColFolders
CheckFolder subFolder, strSourceFolder, strDestFolder
Next
' Check all files in first top folder
For Each objFile in colTopFiles
CheckFiles objFile, strSourceFolder, strDestFolder
Next
Sub CheckFolder (strSubFolder, strSourceFolder, strDestFolder)
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folderName, aSplit
aSplit = Split (strSubFolder, "\")
UBound (aSplit)
If UBound (aSplit) > 1 Then
folderName = aSplit(UBound(aSplit))
folderName = strDestFolder & folderName
End if
If Not fso.FolderExists(folderName) Then
fso.CreateFolder(folderName)
End if
End Sub
Sub CheckFiles (file, SourceFolder, DestFolder)
Set fso = CreateObject("Scripting.FileSystemObject")
Dim DateModified
DateModified = file.DateLastModified
ReplaceIfNewer file, DateMofidied, SourceFolder, DestFolder
End Sub
Sub ReplaceIfNewer (sourceFile, DateModified, SourceFolder, DestFolder)
Const OVERWRITE_EXISTING = True
Dim fso, objFolder, colFiles, sourceFileName, destFileName
Dim DestDateModified, objDestFile
Set fso = CreateObject("Scripting.FileSystemObject")
sourceFileName = fso.GetFileName(sourceFile)
destFileName = DestFolder & sourceFileName
if Not fso.FileExists(destFileName) Then
fso.CopyFile sourceFile, destFileName
End if
if fso.FileExists(destFileName) Then
Set objDestFile = fso.GetFile(destFileName)
DestDateModified = objDestFile.DateLastModified
if DateModified <> DestDateModified Then
fso.CopyFile sourceFile, destFileName
End if
End if
End Sub