Comparer deux arborescence de répertoires

Comparer deux arborescence de répertoires - VB/VBA/VBS - Programmation

Marsh Posté le 25-03-2008 à 15:39:29    

Salut,
 
j'ai écrit un script qui doit parcourir deux arborescence (via des chemins réseau).
Le but est de déterminer si les deux arbo contiennent au moins les mêmes noms de fichiers et répertoires.
 
Voici la fonction créée pour cela :
 

Function RepComp(sChemin1, sChemin2) 'Count files in the folder and sub-folders
 Dim ObjRep1: Set ObjRep1 = oFSO.GetFolder(sChemin1) 'folders source
 Dim ObjRep2: Set ObjRep2 = oFSO.GetFolder(sChemin2) 'folders dest
 Dim ObjSubRep1: Set ObjSubRep1 = ObjRep1.SubFolders 'sub-folders of source
 Dim ObjSubRep2: Set ObjSubRep2 = ObjRep2.SubFolders 'sub-folders of source
 Dim ObjSubRep1Item
 Dim ObjSubRep2Item
 Dim ObjSubRepItem
 'ObjSubRep2Item = ObjRep2.Path
 For Each ObjSubRep1Item In ObjSubRep1 'for each sub-folder  
  ObjSubRep2Item = ObjRep2.Path & "\" & ObjSubRep1Item.Name
  IF oFSO.FolderExists(ObjSubRep2Item) THEN
   'wscript.echo vbTab & Err.Number & ": " & ObjSubRep1Item.Path & " --- " & ObjSubRep2Item
   RepComp ObjSubRep1Item.Path, ObjSubRep2Item  'traiter les sous-dossiers  
  ELSE
   logfile.writeline VbCrLf & vbTab & "Error : folder " & ObjSubRep1Item.Path & " does not exist in " & ObjRep2.Path
  END IF
 Next  
 For Each ObjSubRep2Item In ObjSubRep2 'for each sub-folder  
  ObjSubRepItem = ObjRep1.Path & "\" & ObjSubRep2Item.Name
  IF oFSO.FolderExists(ObjSubRepItem) THEN
   'wscript.echo vbTab & Err.Number & ": " & ObjSubRepItem & " --- " & ObjSubRep2Item
   RepComp ObjSubRep2Item.Path, ObjSubRepItem  'traiter les sous-dossiers  
  ELSE
   logfile.writeline VbCrLf & vbTab & "Error : folder " & ObjSubRepItem & " does not exist in " & ObjRep1.Path
  END IF
 Next  
 '  
 Dim ObjRepFind: Set ObjRepFind = oFSO.GetFolder(sChemin1) 'folder  
 Dim ObjSubFile: Set ObjSubFile = ObjRep1.Files 'Files
 Dim ObjSubFileItem  
 For Each ObjSubFileItem In ObjSubFile 'For each FILE in the folder  
  If oFSO.FileExists(ObjRep2.Path & "\" & ObjSubFileItem.Name) Then
   'Wscript.Echo VbCrLf & vbTab & vbTab & vbTab & "-->" & ObjSubFileItem.Name' & " " & ObjSubFileItem.Path
  Else
   logfile.writeline VbCrLf & vbTab & "Error : File " & ObjSubFileItem.Path & " does not exist in " & ObjRep2.Path
  End If
'   filecpt = filecpt + 1
 Next
 Set ObjSubFile = ObjRep2.Files 'Files
 For Each ObjSubFileItem In ObjSubFile 'For each FILE in the folder  
  If oFSO.FileExists(ObjRep1.Path & "\" & ObjSubFileItem.Name) Then
   'Wscript.Echo VbCrLf & vbTab & vbTab & vbTab & "<--" & ObjSubFileItem.Name' & " " & ObjSubFileItem.Path
  Else
   logfile.writeline VbCrLf & vbTab & "Error : File " & ObjSubFileItem.Path & " does not exist in " & ObjRep1.Path
  End If
  'filecpt = filecpt + 1
 Next
 logfile.writeline VbCrLf & "End of file and sub-folders comparison for " & sChemin1 & " and " & sChemin2
End Function


 
Ca marche très très bien sauf que ...
c'est hyper lent !
A chaque dossier j'ai une latence d'environ 3s.
La structure contient environ 400 dossiers: le parcours met donc environ ... 3h.
 
Voyez vous un moyen d'optimiser le bidule ?


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 25-03-2008 à 15:39:29   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed