Visual Basic - Reducir tiempos de ejecución

Life is soft - evento anual de software empresarial
 
Vista:

Reducir tiempos de ejecución

Publicado por Juampa (6 intervenciones) el 12/01/2009 10:24:53
Hola a todos/as....lo primero, feliz año nuevo a todos.....os quería comentar un duda que tengo y que con casi toda seguridad lograreis ayudarme.
Bien, el caso es que teniendo el siguiente código que recorre desde un path, la estructura de carpetas y subcarpetas y duplica los archivos XML que encuentre con un nombre nuevo dado como prefijo, el tiempo de ejecución cuando tengo muchísimos XML es enorme. Para haceros una idea 365000 archivos de 2Kb tardarían unos 105 horas en ser duplicados.

Necesito reducir dicho tiempo como sea. ¿Podeis ayudarme?
Mil gracias

Os adjunto el código fuente.

Dim archivo2 As Scripting.File
Dim directorio As Folder
Dim fso As New FileSystemObject, nuevo1
Dim nombre As String
Dim directorio2 As Scripting.Folder
Dim archivo As File
Dim cadena As Integer
Dim cadena2 As Integer
Dim total As Long
Dim copiado As Integer
Dim prefijo As String
total = 0
copiado = 0

If Text1.Text <> "" And Text2.Text <> "" Then
On Error Resume Next
Set directorio = fso.GetFolder(Text1.Text)
If Err Then MsgBox "No existe el directorio"
prefijo = Text2.Text
Label2.Caption = "Copiando..."
For Each archivo In directorio.Files
cadena = InStr(archivo.Name, ".xml")
cadena2 = InStr(archivo.Name, "_")
If cadena <> 0 And cadena2 = 0 Then
total = total + 1
End If
If cadena <> 0 And cadena2 = 0 Then
Set nuevo1 = fso.GetFile(archivo.Path)
nuevo1.Copy Replace(archivo.Path, archivo.Name, prefijo + archivo.Name)
copiado = copiado + 1
End If
Next archivo
For Each directorio2 In directorio.SubFolders
For Each archivo2 In directorio2.Files
cadena = InStr(archivo2.Name, ".xml")
cadena2 = InStr(archivo2.Name, "_")
If cadena <> 0 And cadena2 = 0 Then
total = total + 1
End If
If cadena <> 0 And cadena2 = 0 Then
Set nuevo1 = fso.GetFile(archivo2.Path)
nuevo1.Copy Replace(archivo2.Path, archivo2.Name, prefijo + archivo2.Name)
copiado = copiado + 1
End If
Next archivo2
Next directorio2
Label2.Caption = "Copiado " & copiado & " / " & total
MsgBox "Fin de la copia"
ElseIf Text1.Text = "" Then
MsgBox "Introduce un Path"
Else
MsgBox "Introduce un prefijo"
End If
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder