Logotipo
Seguir

DCR: Ejemplos de código script desde DataCycle Reporting

Datacycle Reporting en sus versiones empresariales, permite la ejecución de scritps a través de la tarea Código Script dentro de un proceso. Este script puede ser programado tanto en lenguaje VBScript como en JScript.

Para crear un proceso que ejecute la tarea código script:

1. Desde Todos los procesos, crear un nuevo proceso compuesto (si el proceso no generará el fichero a imprimir)

2. Indicar el nombre en Datos Básicos

3. Desde las Tareas del Proceso,  insertar tarea tipo Código Script.

4. Indicar un título a la tarea y configurar los parámetros requeridos.

5. Colocar el código script correspondiente.  Crear parámetros si fuese necesario.

6. Aceptar y guardar el proceso.

Ejemplos:

Acontinuación tenemos varios ejemplos en Visual Basic Script que nos permiten realizar diferentes funciones directamente desde DataCycle Reporting.

* Lenguaje: VBScript

* Función de inicio de la ejecución: seleccionar el nombre de la función del desplegable

* Valor en caso de retorno en caso de éxito: 0

Nota: Podemos usar parámetros dentro del proceso que remplacen los nombres de fichero y rutas origen

Crear un acceso directo a un informe Exel desde el escritorio:

Utiliza una variable del proceso @PAR(TARGET_FILE_FULLPATH) que contiene el directorio y el nombre del informe que se generará, esto será útil para crear el acceso directo.

La constante NETHOOD con valor &H10& indica el directorio donde queremos que nos cree el acceso directo, en este caso el escritorio, y por último nuestro acceso directo tendrá el nombre: InformeDatacycle

Sub CrearAccesoDirecto
    dim objWSHShell
    dim objShell
    dim objFolder
    dim objFolderItem
    dim strNetHood
    dim strShortcutName
    dim strShortcutPath
    dim objShortcut

    Const NETHOOD = &H10&

    Set objWSHShell = CreateObject("Wscript.Shell")
    Set objShell = CreateObject("Shell.Application")

    Set objFolder = objShell.Namespace(NETHOOD)
    Set objFolderItem = objFolder.Self
    strNetHood = objFolderItem.Path

    strShortcutName = "InformeDatacycle"
    strShortcutPath = "@PAR(TARGET_FILE_FULLPATH)"
    Set objShortcut = objWSHShell.CreateShortcut (strNetHood & "\" & strShortcutName & ".lnk")
    objShortcut.TargetPath = strShortcutPath
    objShortcut.Save

End Sub

Eliminar los ficheros Excel de una carpeta:

Elimina todos los ficheros .xls de la carpeta c:\scripts en la máquina actual que tienen una antigüedad de más de 7 días:

Sub EliminarFicherosMasDe7Dias
    Dim dtmDate,strDay,strMonth,strYear,strTargetDate,strComputer,strDate

    dtmDate = Date - 7

    strDay = Day(dtmDate)

    If Len(strDay) < 2 Then
        strDay = "0" & strDay
    End If

    strMonth = Month(dtmDate)

    If Len(strMonth) < 2 Then
        strMonth = "0" & strMonth
    End If

    strYear = Year(dtmDate)

    strTargetDate = strYear & strMonth & strDay

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set FileList = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='C:\Scripts'} Where " _
            & "ResultClass = CIM_DataFile")

    For Each objFile In FileList
        strDate = Left(objFile.CreationDate, 8)
        If strDate < strTargetDate The
            If objFile.Extension = "xls" Then
                objFile.Delete
            End If
        End If
    Next
End Sub

Eliminar una carpeta:

Elimina la carpeta Y:\Informes\Diario en la máquina actual (la unidad Y puede ser mapeada)

Sub EliminarCarpetas
    Dim strComputer
    
    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set FileList = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='Y:\Informes\Diario'}  " _
 & "WHERE AssocClass = Win32_Subdirectory " _
 & "ResultRole = PartComponent")

    For Each objFile In FileList
                objFile.Delete
    Next
End Sub

 

Mapear una unidad de red, copiar un fichero en esa unidad y desmapear la unidad:

Mapea la unidad M:\  contra el directorio Informes de la máquina SERVIDOR1 y copia el archivo test.txt del directorio c:\Scripts de la máquina desde donde se ejecuta Datacycle.

Sub MapearUnidad
    Set objNetwork = CreateObject("Wscript.Network")
    objNetwork.MapNetworkDrive "M:", "\\SERVIDOR1\Informes"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.CopyFile "C:\Scripts\Test.txt", "M:\"

    objNetwork.RemoveNetworkDrive "M:"
End Sub

Usar información de un Excel para renombrar un conjunto de directorios:

Paso 1

Definir en un libro Excel llamado test.xls en la primera hora 2 columnas. La primera columna contiene una lista de directorios existentes con los nombres antiguos y la segunda columna contiene los nuevos nombres que se asignarán a cada directorio.

foldernames.jpg

Paso 2:

Script que ejecutará la tarea de renombrar los subdirectorios de la carpeta C:\Scripts de la máquina donde se ejecuta Datacycle partiendo de la información del fichero c:\scripts\test.xls

Sub RenombrarCarpetas
    dim strComputer,objWMIService,objExcel,objWorkbook,strOldFolderName
    dim strNewFolderName,errResults,i

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls")
    objExcel.Visible = FALSE
    i = 1

    Do Until objExcel.Cells(i, 1).Value = ""
            strOldFolderName = objExcel.Cells(i, 1).Value
           strNewFolderName = objExcel.Cells(i, 2).Value
            strOldFolderName = Replace(strOldFolderName, "\", "\\")

            Set colFolders = objWMIService.ExecQuery _
                ("Select * from Win32_Directory where Name = '" & strOldFolderName & "'")

            For Each objFolder in colFolders
                errResults = objFolder.Rename(strNewFolderName)
            Next

            i = i + 1
    Loop

End Sub

Crear una nueva carpeta dentro de un directorio

Uutiliza la fecha actual para crear el nombre de la carpeta: NuevaCarpeta en el directorio c:\Scripts

Sub CrearNuevaCarpeta
    Dim strMonth,strDay,strYear,strFolderName

    strMonth = Month(Date)
   
    If Len(strMonth) = 1 Then
        strMonth = "0" & strMonth
    End If

    strDay = Day(Date)

    If Len(strDay) = 1 Then
        strDay = "0" & strDay
    End If

    strYear = Year(Date)

    strFolderName = "C:\Scripts\NuevaCarpeta_" & strMonth & "-" & strDay & "-" & strYear

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.CreateFolder(strFolderName)


End Sub

La tarea Código Script está disponible en nuestras ediciones empresariales Workgroup y Entrerprise.

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0
¿Tiene más preguntas? Enviar una solicitud

0 Comentarios

Inicie sesión para dejar un comentario.
Tecnología de Zendesk