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...