Forum Clubic

Script synchro 2 répertoires en WSH, VBS

Bonjour, j’ai mis au point avec des portions de code, prises à droite à gauche un script de backup qui copie toutes les données d’un dossier source, vers un dossier de destination avec une vérification sur la taille des fichiers (vérif date possible, si ça vous intéresse). Hors la ou le script pêche c’est que si je supprime un fichier dans la source, celui-ci n’est pas supprimé dans la destination, chose que je cherche à obtenir. Je pense qu’il faudrait une fonction delete qui passe en paramètre tous les fichiers de la destination, et s’il n’existe pas dans la source, les supprimes. (fonctions qui doit s’exécuter après celle de recopie de la source vers la destination bien sûr. S’il y a des petits codeurs parmi vous, un coup de pouce serait le bien venu.
Merci

option explicit
Dim fso,srs,srd,f1,f2,sr1,sr2,debut,WshNetwork,oSh,oWMI,colProcessList,objProcess
'set the host folder
'*********************
Set fso = CreateObject("Scripting.FileSystemObject")
Set srs = fso.GetFolder("c:\a")
'create mirror folder if not exist (with computername attribute)
'********************************************************************
Set WshNetwork = WScript.CreateObject("WScript.Network")
if not fso.FolderExists("c:\b") then
            fso.CreateFolder("c:\b")
end if
'set mirror forlder (with computername attribute)
'*****************************************************
Set srd = fso.GetFolder("c:\b")
debut = Now

call recopie(srs,srd)

Wscript.Quit

sub recopie (r1,r2)
            'if needed,copy source to destination, else verify if file size is different
            for each f1 in r1.files
                        if not fso.FileExists(r2.path & "\" & f1.name) then
                                    'wscript.echo "A " & r2.path & "\" & f1.name
                                    f1.Copy(r2.path & "\" & f1.name)
                        else
                                    set f2 = fso.getfile(r2.path & "\" & f1.name)
                                    if f1.Size <> f2.Size then
                                                  'wscript.echo "M " & r2.path & "\" & f1.name
                                                f1.Copy(r2.path & "\" & f1.name)
                                    end if
                        end if
            next
            'copy sub-folders, else do recursive call
            for each sr1 in r1.subfolders
                        if not fso.FolderExists(r2.path & "\" & sr1.name) then
                                    fso.CreateFolder r2.path & "\" & sr1.name
                                    'Wscript.echo "D " & r2.path & "\" & sr1.name
                                    sr1.copy(r2.path & "\" & sr1.name)
                        else
                                    call recopie (sr1,fso.getfolder(r2.path & "\" & sr1.name))
                        end if
            next
end sub

Doublon avec Script synchronisation de 2 répertoires selon la taille des fichiers?
Edité le 19/11/2009 à 20:21

C’est clair que c’est assez proche, mais l’autre est en batch.

Par contre, KDiff3 et WinMerge sont quand même plus utiles :smiley: