Como tener confirmación de copia de archivos vbs

Iniciado por pepeponce, 27 Septiembre 2017, 19:39 PM

0 Miembros y 1 Visitante están viendo este tema.

pepeponce

Hola he hecho este script para copiar unas carpetas que contienen imágenes.
Mi consulta es como puedo confirmar (mediante comparación o verificando) que las carpetas se han copiado completamente.

Gracias por adelantado.

[Option Explicit

Dim objArgumentos
Set objArgumentos = WScript.Arguments

If objArgumentos.Count = 0 Then
   MsgBox ("No hay argumentos")
Else
Dim  IP, OF, LOT, MODULO

   IP= objArgumentos.Item(0)
OF= objArgumentos.Item(1)
   LOT= objArgumentos.Item(2)
   MODULO= objArgumentos.Item(3)

Dim Nosecopian
   'Pregunta de fin de lote productivo
   If Msgbox("Fin de lote productivo?", vbYesNo, "Confirmar") = vbNo Then
       'No es fin de lote productivo no realiza ninguna acción
       Nosecopian = MSGBOX ("No se copian las imagenes" & chr(13) & "Se finaliza lote", VBEXCLAMATION, "Aviso")
   Else
Dim nameFolder, dtmValue, ParentFolder
Dim objShell,objFolder,objFSO
       'Adquirimos la hora actual
       Set objFSO = CreateObject("Scripting.FileSystemObject")
dtmValue = Now()
       'Creamos la carpeta de destino
nameFolder = IP & "\" & OF & "_" & LOT & "_" & MODULO & "_" & Year(dtmValue) & "-" & Month(dtmValue) & "-" & Day(dtmValue) & "_" & Hour(dtmValue) & "-" & Minute(dtmValue)
objFSO.CreateFolder(nameFolder)

'Copiamos carpeta
Const FOF_CREATEPROGRESSDLG = &H0&
ParentFolder = (nameFolder)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(ParentFolder)
objFolder.CopyHere "e:\folder\folder\*.*", FOF_CREATEPROGRESSDLG

       'Preguntamos si se borran las imagenes
Set objFSO = CreateObject("scripting.FileSystemObject")
       If Msgbox("Imagenes copiadas correctamente" & chr(13) & "Borrar imagenes?", vbYesNo, "Confirmar") = vbYes Then
          objFSO.deletefolder "e:\folder\folder\*.*"  
       End if
   End if
End if

wscript.Quit(5)]

Eleкtro

#1
Por favor lee las reglas del foro y formatea ese código.




Cita de: pepeponce en 27 Septiembre 2017, 19:39 PMMi consulta es como puedo confirmar (mediante comparación o verificando) que las carpetas se han copiado completamente.

Añade un control de errores mediante el uso de On Error Resume Next al llamar al método Copy / CopyHere y evalua el valor de la propiedad Err.Number.

Aquí tienes la documentación:

Y este sencillo ejemplo demostrativo que escribí:
Código (vb) [Seleccionar]
Set folder = CreateObject("Scripting.FileSystemObject"). _
            GetFolder("C:\Source Directory\")

On Error Resume Next
   folder.Copy("C:\Target Directory\")

    If (Err.Number <> 0) Then
        MsgBox(Err.Description)
    Else
        MsgBox("Copy Successful")
    End If
On Error Goto 0





Cita de: pepeponce en 27 Septiembre 2017, 19:39 PMwscript.Quit(5)

¿Hay alguna buena razón por la que utilices un código de salida 5?, eso es algo atípico, lo normal sería que usases el Cero para indicar una terminación exitosa de la aplicación...:

Código (vb) [Seleccionar]
Wscript.Quit( 0 )

Saludos








pepeponce

Cita de: Eleкtro en 27 Septiembre 2017, 20:26 PM
Por favor lee las reglas del foro y formatea ese código.




Añade un control de errores mediante el uso de On Error Resume Next al llamar al método Copy / CopyHere y evalua el valor de la propiedad Err.Number.

Aquí tienes la documentación:

Y este sencillo ejemplo demostrativo que escribí:
Código (vb) [Seleccionar]
Set folder = CreateObject("Scripting.FileSystemObject"). _
            GetFolder("C:\Source Directory\")

On Error Resume Next
   folder.Copy("C:\Target Directory\")

    If (Err.Number <> 0) Then
        MsgBox(Err.Description)
    Else
        MsgBox("Copy Successful")
    End If
On Error Goto 0





¿Hay alguna buena razón por la que utilices un código de salida 5?, eso es algo atípico, lo normal sería que usases el Cero para indicar una terminación exitosa de la aplicación...:

Código (vb) [Seleccionar]
Wscript.Quit( 0 )

Saludos

Hola Elektro
La razon por la que devuelvo un (5) es porque el script lo ejecuto llamado por otra aplicación que necesita este (5) para que entienda que ha finalizado correctamente y se pueda cerrar sin errores.

Muchas gracias por la aportación, lo pruebo.