Espace membre :
flechePublicité

3 messages
Filtrer ok

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

Code :
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
 
 
 
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
Modérateur Logiciel - Programmation
 
 
     
3 messages
Filtrer ok
Vous devez être connecté pour écrire un message !

BE GEEK ! Avec Clubic Logo

flechePublicité