Imprimir
Categoría: Scripting

Descripción del problema

Supongamos que tenemos un proceso de carga de datos en una página web. Y supongamos que estos datos se actualizan cada día mediante la descarga de "n" archivos de un FTP que crea una carpeta con un formato de fecha determinado. Supongamos también que somos unos vagos (no, no me miréis) y que queréis automatizar la tarea ya que cada día de la semana se descargan nuevos datos.

Para poder hacer la descarga, hay que descompartir la carpeta, crear una estructura de datos, verificar que existe un archivo y volverla a compartir. Liado, no?

Bien, lo arreglamos mediante un script, no?

Descripción de la solución

Bueno, este script   que podeis bajar desde nuestra sección de descargas, está inspirado (como siempre) en el Script Repository de la web de Microsoft y adaptado a unas necesidades concretas.

La sintaxis del .vbs es:

CompartirDossier.vbs nombreFichero RutaCarpeta RutaArchivo RutaCarpComp NombreCarpComp

donde

nombreFichero: Fichero en el que crearemos el log de ejecución.

RutaCarpeta: Carpeta donde se almacena el fichero a buscar

RutaArchivo: Ruta donde buscaremos un fichero "comodin" que nos dirá si podemos, o no compartir la carpeta.

RutaCarpComp: Ruta de la carpeta a compartir. 

NombreCarpComp Nombre que tendrá la carpeta que compartiremos.

Si miramos el código del VBS veremos que hay un tratamiento de fechas para generar el nombre de carpeta que se crea en cada descarga de datos desde el FTP.

Dia = Day(Now)
If Dia < 10 then
 Dia = "0" & Dia
End If

Mes = Month(Now)
Anyo = Mid(Year(Date), 3, 2)

Fecha = Anyo & Mes & Dia

Lo siguiente que vemos es una serie de inicializaciones que os dejo que miréis (no voy a comentarlas por ser muy sencillas) y nos meternos directamente al código en sí.

Con If objFSO.FileExists(ArchivoSI) Then preguntamos si el archivo "comodín" existe, es decir, si el proceso de descarga se ha ejecutado correctamente.

Las siguientes 4 lineas sirven para optener la ruta de la carpeta y mirar todas las subcarpetas de la ruta dada hasta que encontremos la que cumpla la condición "Si tienes la fecha de hoy..."

Set objFolder = objFSO.GetFolder(Ruta)
  Set colSubfolders = objFolder.Subfolders
     For Each objSubfolder in colSubfolders
     If  objSubfolder.Name = Fecha Then [...]

Llegados a este punto, sólo nos queda compartir la carpeta y finalizar la ejecución.

Set objNewShare = objWMIService.Get("Win32_Share")
   errReturn = objNewShare.Create (RutaCarpetaCompartir, CarpetaCompartir, FILE_SHARE, MAXIMUM_CONNECTIONS, CarpetaCompartir)

Ale, no era tan difícil...

 --

Marc

MCP - MVP Windows Shell/User

 

Visto: 11667