Archivo

Archivo para miércoles, 25 de junio de 2014

[VBS] Copia de datos de usuario con RoboCopy desde un Visual Basic Script

miércoles, 25 de junio de 2014 Sin comentarios

Hola,

A veces, por necesidades de algún cliente, uno se pone a desempolvar scripts o a adaptarlos para que hagan otras cosas.

Hoy es uno de esos casos. Un cliente me ha pedido realizar la copia de datos de usuario entre diferentes FileServer leyendo a los usuarios a copiar desde un fichero de texto, poniendo un usuario por línea.

Bien, el resultado es este:

‘ Filename:     vbsRobocopyParameters.vbs
‘ Revision:     v1.0 – Paso de parámetros
‘ Author:    Marc
‘         
‘ Date:        23/06/2014
‘ Sintaxis:     vbsRobocopyParameters pathToTXT

On Error Resume Next

‘**************** Definición de constantes **********************
Dim objFSObject, strFile, strFileContents, strCurrentUser, arrLineCollection
CONST ForReading = 1

‘Creamos el objeto de sistema para leer
Set objFSObject = CreateObject(«Scripting.FileSystemObject»)

‘*************** Petición de fichero y comprobación *************************
Correcto = False

Do While Correcto = False
    If not objFSObject.FileExists(strFile) Then
        strFile = InputBox(«Nombre del fichero .txt a leer», «Robocopy de usuarios»)
    Else
        Correcto = True
    End If
Loop

‘********** Leemos el contenido del fichero para poder lanzar el Robocopy ************
strFileContents = objFSObject.OpenTextFile(strFile,ForReading).ReadAll
arrLineCollection = Split(strFileContents,vbCrLf)

objSource = «F:\Usuarios»
objDestination = «E:\Users»

‘Creamos el objeto de sistema para ejecutar Robocopy
set objShell = CreateObject(«Wscript.Shell»)

‘************* Bucle para ejecutar el Robocopy *****************************

For Each strCurrentUser in arrLineCollection
    objSourceAll = ObjSource & «\» & strCurrentUser
    objDestAll = objDestination & «\» & strCurrentUser
    objCommand = «RoboCopy.Exe « & Chr(34) & objSourceAll & Chr(34) & » « & Chr(34) & objDestAll & Chr(34) & » /S /E /MIR /R:3 /W:10 /LOG:E:\robocopy\» & strCurrentUser & «.log»
     objShell.Run(objCommand)
Next

 

Saludos,

Marc

Categories: Dia a dia Tags: