elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Como tener confirmación de copia de archivos vbs
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como tener confirmación de copia de archivos vbs  (Leído 2,337 veces)
pepeponce

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Como tener confirmación de copia de archivos vbs
« en: 27 Septiembre 2017, 19:39 pm »

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.

Código:
[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)]


« Última modificación: 27 Septiembre 2017, 22:32 pm por pepeponce » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: Como tener confirmación de copia de archivos vbs
« Respuesta #1 en: 27 Septiembre 2017, 20:26 pm »

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



Mi 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
  1. Set folder = CreateObject("Scripting.FileSystemObject"). _
  2.             GetFolder("C:\Source Directory\")
  3.  
  4. On Error Resume Next
  5.    folder.Copy("C:\Target Directory\")
  6.  
  7.    If (Err.Number <> 0) Then
  8.        MsgBox(Err.Description)
  9.    Else
  10.        MsgBox("Copy Successful")
  11.    End If
  12. On Error Goto 0



wscript.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
  1. Wscript.Quit( 0 )

Saludos


« Última modificación: 27 Septiembre 2017, 20:36 pm por Eleкtro » En línea

pepeponce

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Como tener confirmación de copia de archivos vbs
« Respuesta #2 en: 27 Septiembre 2017, 22:19 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
  1. Set folder = CreateObject("Scripting.FileSystemObject"). _
  2.             GetFolder("C:\Source Directory\")
  3.  
  4. On Error Resume Next
  5.    folder.Copy("C:\Target Directory\")
  6.  
  7.    If (Err.Number <> 0) Then
  8.        MsgBox(Err.Description)
  9.    Else
  10.        MsgBox("Copy Successful")
  11.    End If
  12. 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
  1. 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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines