Computing.Net > Forums > Programming > Comparing Files+Folders using VBS

Comparing Files+Folders using VBS

Reply to Message Icon

Original Message
Name: dazra
Date: March 22, 2006 at 06:19:47 Pacific
Subject: Comparing Files+Folders using VBS
OS: XP pro
CPU/Ram: Intel P 4
Model/Manufacturer: HP
Comment:

I'm trying to create a vb script which will allow me to compare my documents with a backup of my documents on a server. So here is what I need the script to do. Person A logs off at night and his my documents are backed up the server. Person A logs on the next day and deletes several files from my documents as they are no longer needed. The backup program which runs will not detect that and delete the files off his backup on the server.

Ideally I want this script to run when the person logs on. It will then compare what is in his my documents to what is in the backups. If Person A has deleted files, then it will delete those same files off the server. I found a script already online, and I've tried tweaking it but when I run it, nothing changes, and it doesn't give me any errors. Here it is so far:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objNetwork = wscript.CreateObject("wscript.network")

SOURCE_FOLDER = "C:\Documents and Settings\dazra\My Documents\"
DESTINATION_FOLDER = "F:\xpbackup\documents and settings\dazra\My Documents\"


ReplicateFolders objFSO, SOURCE_FOLDER, DESTINATION_FOLDER

'******************
' Sub ReplicateFolders
'
' This procedure replicates between the source and the destination
' directories at the folder level. A recursive search is done
' between the 2 directories and folders compared. If a folder exists on the
' destination but not on the source, the source is deleted
'******************

Sub ReplicateFolders (objFSO, strSourceFolderPath, strDestinationFolderPath)
Dim aFolderArraySource ' Declares an array for folder source
Dim aFolderArrayDestination ' Declares an array for folder destination
Dim FolderListSource ' declares a var for folder list source
Dim FolderListDestination ' declares a var for folder list destination
Dim oFolderSource
Dim oFolderDestination
Dim bSourceExists
Dim bDestinationExists

On Error Resume Next

Set aFolderArraySource = objFSO.GetFolder(strSourcefolderpath)
Set aFolderArrayDestination = objFSO.GetFolder(strDestinationfolderpath)
Set FolderListSource = aFolderArraySource.SubFolders
Set FolderListDestination = aFolderArrayDestination.SubFolders

ReplicateFiles objFSO, strSourcefolderpath, strDestinationfolderpath

For Each oFolderDestination in FolderListDestination
bSourceExists = 0
For each oFolderSource in FolderListSource
If oFolderDestination.Name = oFolderSource.Name then
bSourceExists = 1
Exit For
End If
Next
If bSourceExists = 0 then
objFSO.DeleteFolder strDestinationfolderpath & "\" & _
oFolderDestination.Name, true
End if
Next

End Sub


'******************
' Sub ReplicateFiles
'
' This procedure replicates between the source and the destination
' directories at the file level.
' If a particular file on the destination directory
' does not exist on the source at any level then the destination file
' is removed from the destination directory.
'
'******************


Sub ReplicateFiles (objFSO, strSourcefolderpath, strDestinationfolderpath)


Dim aFileArraySource
Dim aFileArrayDestination
Dim FileListSource
Dim FileListDestination
Dim oFileSource
Dim oFileDestination
Dim bSourceExists
Dim bDestinationExists

On Error Resume Next

For each oFileDestination in FileListDestination
bSourceExists = 0
For each oFileSource in FileListSource
If oFileDestination.Name = oFileSource.Name then
If oFileDestination.DateLastModified = oFileSource.DateLastModified then
bSourceExists = 1
Exit For
End If
End If
Next
If bSourceExists = 0 then
objFSO.DeleteFile strDestinationfolderpath & "\" & _
oFileDestination.Name,true
End If
Next

End Sub

Help me plz! THANKS!


Report Offensive Message For Removal


Response Number 1
Name: Michael J (by mjdamato)
Date: March 22, 2006 at 06:48:08 Pacific
Reply: (edit)

I could take the time to go through that code and make any necessary changes, but why are you making this more difficult than it needs to be?

Instead of creating a second process to remove deleted files from the backup, why not just do it during the backup process? I don't know what you are using at the moment to do the "backup", but there are many good freeware scripts/programs that will replicate deletions as well. Here is one: http://www.karenware.com/powertools/ptreplicator.asp

One last note. The purpose of a backup is to restore files which have become lost or corrupted - this includes accidental deletions! By replicating the users deletions you may be deleting a file which the user unintentionally deleted and needs to recover. You might want to consider using a backup method that allows youto restore older files. You could create 7 different backup folders, one for each day of the week so that you can restore anything back to 7 days. A weekly and monthly backup would be an option too. Just a suggestion.

Michael J


Report Offensive Follow Up For Removal

Response Number 2
Name: dazra
Date: March 22, 2006 at 07:06:24 Pacific
Reply: (edit)

I was using a batch file to do a backup, and I'm currently exploring how to do a replication with another batch file as well as vbs. I have little knowledge on batch files but an ok amount on vbs. I will look into that link and see what it has to offer, but being that this is for a company, unauthorized programs are not "allowed". I will still look into it.

Thanks


Report Offensive Follow Up For Removal

Response Number 3
Name: dazra
Date: March 22, 2006 at 07:10:49 Pacific
Reply: (edit)

I just looked over the link you sent, and spoke with my manager on it, and that does not look like it will be the best way to go about it. It wouldn't be allowed to install that on all workstations.

The best way for us atm is to come up with a script/batch file so that we can use windows gpedit to have it run during startup/shutdown.

If anyone can help me on the coding i'd appreciate it.

Thanks


Report Offensive Follow Up For Removal

Response Number 4
Name: Michael J (by mjdamato)
Date: March 22, 2006 at 07:16:04 Pacific
Reply: (edit)

OK, I lied. I was bored and ddecided to take a look at the code. It worked for folders but not for files. To make it work for file too add the line in blue below:


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objNetwork = wscript.CreateObject("wscript.network")

SOURCE_FOLDER = "C:\test_src\"
DESTINATION_FOLDER = "C:\test_dst\"


ReplicateFolders objFSO, SOURCE_FOLDER, DESTINATION_FOLDER

'******************
' Sub ReplicateFolders
'
' This procedure replicates between the source and the destination
' directories at the folder level. A recursive search is done
' between the 2 directories and folders compared. If a folder exists on the
' destination but not on the source, the source is deleted
'******************

Sub ReplicateFolders (objFSO, strSourceFolderPath, strDestinationFolderPath)
Dim aFolderArraySource ' Declares an array for folder source
Dim aFolderArrayDestination ' Declares an array for folder destination
Dim FolderListSource ' declares a var for folder list source
Dim FolderListDestination ' declares a var for folder list destination
Dim oFolderSource
Dim oFolderDestination
Dim bSourceExists
Dim bDestinationExists

On Error Resume Next

Set aFolderArraySource = objFSO.GetFolder(strSourcefolderpath)
Set aFolderArrayDestination = objFSO.GetFolder(strDestinationfolderpath)
Set FolderListSource = aFolderArraySource.SubFolders
Set FolderListDestination = aFolderArrayDestination.SubFolders

ReplicateFiles objFSO, strSourcefolderpath, strDestinationfolderpath

For Each oFolderDestination in FolderListDestination
bSourceExists = 0
For each oFolderSource in FolderListSource
If oFolderDestination.Name = oFolderSource.Name then
bSourceExists = 1
Exit For
End If
Next
If bSourceExists = 0 then
objFSO.DeleteFolder strDestinationfolderpath & "\" & _
oFolderDestination.Name, true
End if
Next

End Sub

'******************
' Sub ReplicateFiles
'
' This procedure replicates between the source and the destination
' directories at the file level.
' If a particular file on the destination directory
' does not exist on the source at any level then the destination file
' is removed from the destination directory.
'
'******************


Sub ReplicateFiles (objFSO, strSourcefolderpath, strDestinationfolderpath)


Dim aFileArraySource
Dim aFileArrayDestination
Dim FileListSource
Dim FileListDestination
Dim oFileSource
Dim oFileDestination
Dim bSourceExists
Dim bDestinationExists

On Error Resume Next

Set aFileArraySource = objFSO.GetFolder(strSourcefolderpath)
Set aFileArrayDestination = objFSO.GetFolder(strDestinationfolderpath)
Set FileListSource = aFileArraySource.files
Set FileListDestination = aFileArrayDestination.files

For each oFileDestination in FileListDestination
bSourceExists = 0
For each oFileSource in FileListSource
If oFileDestination.Name = oFileSource.Name then
If oFileDestination.DateLastModified = oFileSource.DateLastModified then
bSourceExists = 1
Exit For
End If
End If
Next
If bSourceExists = 0 then
MsgBox strDestinationfolderpath & "\" & oFileDestination.Name
objFSO.DeleteFile strDestinationfolderpath & "\" & _
oFileDestination.Name,true
End If
Next

End Sub


'******* END SCRIPT *******
Also one of the comments in the script states: "If a particular file on the destination directory does not exist on the source at any level then the destination file is removed from the destination directory." That is not true. It only deletes the file if it does not exist in the same directory.

Michael J


Report Offensive Follow Up For Removal

Response Number 5
Name: Michael J (by mjdamato)
Date: March 22, 2006 at 07:19:10 Pacific
Reply: (edit)

I hope you see why the code was not working now.

Michael J


Report Offensive Follow Up For Removal


Response Number 6
Name: dazra
Date: March 22, 2006 at 07:38:32 Pacific
Reply: (edit)

I see my error and am smacking my head. Sometimes you just need a second set of eyes. Thanks for the help.


Report Offensive Follow Up For Removal

Response Number 7
Name: dazra
Date: March 22, 2006 at 07:40:55 Pacific
Reply: (edit)

my other question was this... if i wanted to put a universal variable in the place of username, so isntaed of
SOURCE_FOLDER = "C:\Documents and Settings\dazra\My Documents\"

I change it to SOURCE_FOLDER = "C:\Documents and Settings\" & objectNetwork.UserName &" \My Documents\"

Am I correct in saying that?


Report Offensive Follow Up For Removal

Response Number 8
Name: Michael J (by mjdamato)
Date: March 22, 2006 at 07:49:42 Pacific
Reply: (edit)

I don't see why not. I always like to use lots of MsgBox's to see what is going on in my code when writing it. So do this:

MsgBox "C:\Documents and Settings\" & objectNetwork.UserName &" \My Documents\"

Does it give the correct path?

Also, I found the original script you referenced above here. It includes the abilty to copy new files and folders to the destination as well as removing deleted files & folders from the destination. Seems like you could do everything at one time instead of having two different scripts.

Michael J


Report Offensive Follow Up For Removal

Response Number 9
Name: dazra
Date: March 22, 2006 at 08:02:46 Pacific
Reply: (edit)

Thats exactly where I got the script from. The only problem is that copies the entire contents of my documents over. In our current batch file I exclude certain files/folders, so I thought it would be easier to just remove certain lines of code from that one rather than tweak it to exclude certain files/folders.



Report Offensive Follow Up For Removal

Response Number 10
Name: dazra
Date: March 22, 2006 at 08:08:04 Pacific
Reply: (edit)

For some reason that script isn't working. I double click the script and it just doesn't do anything.

Interesting.


Report Offensive Follow Up For Removal

Response Number 11
Name: dazra
Date: March 22, 2006 at 08:11:13 Pacific
Reply: (edit)

never mind, I figured out why. The destination_source didn't exist so it didn't run. I should try and make an if not destination_source.exist then create


Report Offensive Follow Up For Removal

Response Number 12
Name: dazra
Date: March 22, 2006 at 08:16:52 Pacific
Reply: (edit)

Is there a way in vbs to exclude certain file extensions and or folders? For example if I don't want to include any .mp3, .exe, .wmv etc, what command what I use for that?


Report Offensive Follow Up For Removal

Response Number 13
Name: Michael J (by mjdamato)
Date: March 22, 2006 at 08:44:23 Pacific
Reply: (edit)

It would also be pretty simple to create an exclusion list of folders not to copy:

====Include this at the top=======
'Include the paths of excluded folders,
'comma separatedf,rom the root of the source
excludedFolders = "NetHood,PrintHood,Microsoft\AddIns"

xFolderArray = Split(excludedFolders, ",", -1, 1)

====== Add this logic into the code ===
====== to skip excluded folders ===
For Each oFolderSource in FolderListSource

skip = false
For Each xFolder in xFolderArray
If strSourcefolderpath & "\" & xFolder =
oFolderSource.Path Then
skip = true
End If
Next

If skip = false Then
...proceed with code

Dont forget to add an End If just before the end of the first For loop.


Actually, I'm looking to modify this code for my personal use on my home network.


Michael J


Report Offensive Follow Up For Removal

Response Number 14
Name: Michael J (by mjdamato)
Date: March 22, 2006 at 08:51:55 Pacific
Reply: (edit)

I posted before reading your last message. Excluding files by extentsion would be similar. Create an exclusion list of extensions

excludedFiles = ".mp3,.exe,.wmv"
xFileArray = Split(excludedFiles, ",", -1, 1)

Then add logic into the code to check the file before copying it.

However, I would probably use the xcopy command within the vbscript to do the copying since it would probably be more efficient and it already has exclusion capabilities built in.

Michael J


Report Offensive Follow Up For Removal

Response Number 15
Name: dazra
Date: March 31, 2006 at 13:59:50 Pacific
Reply: (edit)

Another question.... When testing this script I found that it will do the following: if you have my documents\folderA\folder1 and you delete folder 1 it will not replicate it. If you delete FolderA then it will replicate successfully. Any thoughts on this?


Report Offensive Follow Up For Removal

Response Number 16
Name: Michael J (by mjdamato)
Date: March 31, 2006 at 15:34:34 Pacific
Reply: (edit)

Yes, the script you are using ONLY goes through the subfolders in the root of the source. If one is missing it replicates it. Then it ONLY goes through the files in those first set of subfolders and replicates them if missing. The script is not recursive (even though the comments say it is). It should check the first folder in the source, then check the subfolders of that folder, and then all the sobfolders of those and so on BEFORE it goes to the 2nd subfolder in the source root.

The current script will need a bit of rewriting in order to handle sub folders properly. But, here is a link to a tutorial which shows an easy way to write a script to recursively go through sub folders (see the section on searching through file system): Using VBScript and the FileSystemObject to Replace Batch Files


Michael J


Report Offensive Follow Up For Removal

Response Number 17
Name: dazra
Date: April 4, 2006 at 08:41:07 Pacific
Reply: (edit)

What does this do?
For Each objFile In objCurrentFolder.Files

Mainly what does the .Files do?


Report Offensive Follow Up For Removal

Response Number 18
Name: Michael J (by mjdamato)
Date: April 4, 2006 at 12:08:13 Pacific
Reply: (edit)

objCurrentFolder is a folder object, same as when the current script uses this:

Set aFolderArraySource = objFSO.GetFolder

Once you have a folder as an object, there are a lot of procedures (not sure if this is the right terminology) you can do with it. By appending the .Files to the end of it you are referencing all of the files in that folder as an array. You could also use .Name (to get the name of the folder), .Path (to get the path of the folder), and more: modified date, creation date, etc, etc.

By using:

For Each objFile In objCurrentFolder.Files

...statements to run

Next

You are creating a loop which will assign each file in the folder as an object to objFile. You can then perform whatever functions you want on that file object: get properties such as name, path, size or perform operations such as copy and move.

Michael J


Report Offensive Follow Up For Removal

Response Number 19
Name: dazra
Date: April 14, 2006 at 08:26:42 Pacific
Reply: (edit)

I'm back with another question. Sorry for the delay but stuff came up that had to be done and this got put on hold.

It seems all I have to do is change this:

For Each oFolderDestination in FolderListDestination
bSourceExists = 0

To This
For Each oFolderDestination in FolderListDestination.files
bSourceExists = 0

and add this as well

For Each objNewFolder In oFolderDestination.subFolders
CheckFolder objNewFolder, objLogFile
Next

Does that seem right? Only reason I ask is cause I don't want to test and end up deleting data.


Report Offensive Follow Up For Removal

Response Number 20
Name: Michael J (by mjdamato)
Date: April 14, 2006 at 09:27:10 Pacific
Reply: (edit)

"To This
For Each oFolderDestination in FolderListDestination.files
bSourceExists = 0"

No, that wouldn't make sense. "FolderListDestination" is an array of folders. The individual folders have files, but the array does not.

"For Each objNewFolder In oFolderDestination.subFolders
CheckFolder objNewFolder, objLogFile
Next"

Pretty close. The function we want to call is actually "ReplicateFolders" (unless you have changed it). That function takes three arguments: objFSO, strSourceFolderPath, strDestinationFolderPath. The last two need to be a string, not an object. So it would go something like this:

For Each objNewFolder In oFolderDestination.subFolders
ReplicateFolders objFSO, objNewFolder.Path sourceFolderSubPath
Next

The difficulty here is determining the correct taget path. If you were just dealing with the first level of subfolders (as the original script did) then you would just need the DESTINATION_FOLDER specified in the top plus the sub folder name. Once you go a level deeper, then what.

Here's an example:
SOURCE_FOLDER = "c:myfiles\"
DESTINATION_FOLDER = "d:\archive\"
CURRENT_FOLDER = "c:myfiles\a\"

You could then append the destination folder with the current folder name to get "d:\archive\" + "a\" (uou may need to add backslashes as appropriate).

However, if the CURRENT_FOLDER = "c:myfiles\a\b\c\" how do you get the source folder of "d:\archive\a\b\c\". How I would do it would be to take the current path of the current folder and use the RIGHT function to strip away everything up to the first subfolder like this:

NewSourceFolder = DESTINATION_FOLDER & RIGHT(objNewFolder.Path,(Len(objNewFolder.Path)-Len(SOURCE_FOLDER)))

Of course you would have to account for variable scope. Not sure if DESTINATION_FOLDER & SOURCE_FOLDER are within scope (available) in the funciton.

Actually I think this script could use a rewrite. There is some good code here, but some of the logic is flaweed. If I get some time this weekend I'll see what I can do.
Michael J


Report Offensive Follow Up For Removal

Response Number 21
Name: dazra
Date: April 14, 2006 at 13:37:20 Pacific
Reply: (edit)

I agree with you that it is difficult changing the current script to check all files and subfolders. I've started another script and here's what I have so far. It doesn't work but I'm hoping its on the right track

Set objNetwork = wscript.CreateObject("wscript.network")

strSourceFolder = "C:\Documents and Settings\"&objNetwork.Username&"\"
strDestFolder = "F:\xpbackup\documents and settings\"&objNetwork.Username&"\"

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objSourceFolder = objFSO.GetFolder(strSourceFolder)
Set objDestFolder = objFSO.GetFolder(strDestFolder)

Set colSourceFiles = objSourceFolder.Files
Set colDestFiles = objDestFolder.Files


SubFoldersSource objFSO, strSourceFolder, strDestFolder

Sub SubFoldersSource(objFSO, objSourceFolder, objDestFolder)

on error resume next

Set colSourceFolders = objSourceFolder.SubFolders
Set colDestFolders = objDestFolder.SubFolders

SubFilesSource objFSO, colSourceFiles, colDestFiles

For Each objFile In colDestFiles
bSourceExists = 0

If colDestFIles = colSourceFiles then
bSourceExists = 1
Exit For

End If
Next

If bSourceExists = 0 then
objFSO.DeleteFolder objDestFolder & "\" & colDestFolders.Name, true
End if

SubFolderSource objFSO, objSourceFolder, objDestFolder


For Each objSubFolder In colDestFolders
Set colSourceFiles = objSubFolder.Files

For Each objFile In colSourceFiles


Next

ShowSubFoldersSource objFSO, objSourceFolder, objDestFolder

Next

End Sub


Sub SubFilesSource(objFSO, objSourceFolder, objDestFolder)

Set colSourceFiles = objSourceFolder.Files
Set colDestFiles = objDestFolders.Files

For Each objFile In colDestFiles
bSourceExists = 0

If colDestFIles = colSourceFiles then
bSourceExists = 1
Exit For

End If
Next

If bSourceExists = 0 then
objFSO.DeleteFile objDestFolder.Path & "\" & colDestFolders.Name, true
End if

For Each objSubFolder In colFolders

Set colDestFiles = objSubFolder.Files

For Each objFile In colDestFiles


Next

SubFoldersDest(objSubFolder)

Next

End Sub



Report Offensive Follow Up For Removal

Response Number 22
Name: Michael J (by mjdamato)
Date: April 14, 2006 at 15:30:50 Pacific
Reply: (edit)

OK, well it looks like we have been duplicating work! I have rewritten the script from the ground up and have a working version located here: http://repeat-offenders.org/backupscript.htm. I think this will work much better than that original script and is more efficient.

Currently the script:

Replication
1. Starts with source folder and if it doesn't exist on the target copies it and all contents there

2. If the source folder does exist on the target it checks the files in that folder and copies any missing files or files with later modified dates to the target

3 Recurses through all subfolders (all levels) in the source, repeating steps 1 & 2 for each

Synchronization
4. Starts with target folder and if it does not exist in the source deletes it.

5. If the target folder does exist in source it goes through all files in the target folder and deletes them if they do not exist in the source

6. Recurses through all sub folders (all levels) in the target, repeating steps 4 & 5 for each.

Notes:
- The silent switch will suppress dialogs from appearing (only 1 at the moment). Turn it on for testing.

- The replicate switch will determine if steps 1-3 are performed

- The synchronize switch determines if steps 4-6 are performed

- Excluded folders and file types have not been built into it yet.

I welcome you to try it out and send me any feedback you have. Pease use the email address in the script for any questions or comments - this thread is pretty long now!
Michael J


Report Offensive Follow Up For Removal

Response Number 23
Name: dazra
Date: April 17, 2006 at 08:00:35 Pacific
Reply: (edit)

Wow. I really appreciate you helping me on this. Yup, this thread has gotten pretty long but I believe many people out there will benefit from it.

I'm going to take your script and edit that furthur to make two versions. One that does both replicates and syncronizes, and one that only syncronizes.

Again I greatly appreciate your help on this.

Thank you very much!


Report Offensive Follow Up For Removal

Response Number 24
Name: dazra
Date: April 17, 2006 at 08:33:17 Pacific
Reply: (edit)

I've modded your script to just do syncronization and here is the code.

Thanks again.

'=======================================================
'
' Script: VBScript Backup & Sync
' Date: 04/14/2006
' Author: Michael J. Damato
' Contact: mjdamato@cox.net
'
' Notes: This is still in developmetn
'=======================================================
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objNetwork = wscript.CreateObject("wscript.network")

SOURCE = "C:\Documents and Settings\"&objNetwork.Username&"\"
TARGET = "F:\xpbackup\documents and settings\"&objNetwork.Username&"\"

replicate = true
synchronize = true
silent = false

FLDR_EXcLUDE = ""
FILE_EXCLUDE = ""


'Verify if target folder exists
If Not (objFSO.FolderExists(TARGET)) Then
'Do not synchronize, Perform error handling
MsgBox "Target Missing"
'Proceed if synching is on
ElseIf ( synchronize ) Then
syncFolders SOURCE, TARGET
End If

'Cleanup variables
Set objFSO = nothing
Set sourceObj = nothing
Set targetObj = nothing
Set targetFileObj = nothing
Set sourceFileObj = nothing

If Not ( silent ) Then
MsgBox "Backup Complete!", 0, "Done"
End If

'=======================================================
Sub syncFolders (currentSource, currentTarget)
'=======================================================
'
'=======================================================

'Check if source folder exists
If Not (objFSO.FolderExists(currentSource)) Then

'Delete the current target folder
objFSO.DeleteFolder currentTarget

Else

'Create folder object of the currentTarget
Set targetObj = objFSO.GetFolder(currentTarget)

'Perform file synching for the currentTarget
syncFiles currentSource, targetObj

'Do recursive processing of sub folders
For Each subFolderObj in targetObj.SubFolders
newSource = SOURCE & RIGHT(subFolderObj.Path,(Len(subFolderObj.Path)-Len(TARGET)))
syncFolders newSource, subFolderObj.path
Next

End If

'=======================================================
End Sub 'syncFolders
'=======================================================


'=======================================================
Sub syncFiles (sourcePath, targetObj)
'=======================================================
'
'=======================================================-

' Recurse through all files in the target object
For Each targetFileObj in targetObj.Files

sourceFile = sourcePath & "\" & targetFileObj.Name

'Delete target file if does not exist in source
If Not (objFSO.FileExists(sourceFile)) Then
targetFileObj.Delete true
End If
Next

'=======================================================
End Sub 'syncFiles
'=======================================================


Report Offensive Follow Up For Removal

Response Number 25
Name: Michael J (by mjdamato)
Date: April 17, 2006 at 09:04:46 Pacific
Reply: (edit)

Instead of removing the code for the replication process, you just needed to make this change

replicate = false

That would have skipped the process of copying files from the source to the target.

At the moment I am working on the file/folder exclusions. I could do it with a recursive array search, but I decided to use regular expressions as it should run much faster. If you email me, I will send you updates as I complete that.

Michael J


Report Offensive Follow Up For Removal

Response Number 26
Name: Michael J (by mjdamato)
Date: April 17, 2006 at 14:08:38 Pacific
Reply: (edit)

OK, I have updated the script (same link as above). It will now process file and folder exclusions. There are now also switched to bypass hidden files and/or folders.

And you can call the script from the command line and specify whether you want to replicate or sycn (or both) and whether you want to run silently. You call it in this format:

wscript backupScript.vbs [replicate] [sync] [silent]

The parameters must be "trye"/"false" or "0"/"1". They are also optional. If any parameters are missing they will use the values inthe script as the default.

I think I will build out the parameter functionality a little more as well as add logging capability. Any other ideas?

Michael J


Report Offensive Follow Up For Removal

Response Number 27
Name: dazra
Date: April 18, 2006 at 09:06:27 Pacific
Reply: (edit)

Its a great script. I've searched the internet a lot for any script that can do something close to this and the only thing I have found was our very original script which only went through one level of folders.

As for ideas... I'm sure we could come up with tons of them to further increase the power of this script. At that point you might as well market and sell it :)

Thanks again for your help on this.


Report Offensive Follow Up For Removal






Use following form to reply to current message:

   Name: From My Computing.Net Settings
 E-Mail: From My Computing.Net Settings

Subject: Comparing Files+Folders using VBS

Comments:

 


  Homepage URL (*): 
Homepage Title (*): 
         Image URL: 
 
Data Recovery Software




Have you ever used OpenOffice?

Yes, as my main suite.
Yes, occationally.
Yes, but only once.
No, never.


View Results

Poll Finishes In 5 Days.
Discuss in The Lounge