Descripción del problema

Supongamos que tenemos una aplicación que cada día nos genera una carpeta que ocupa "m" MB en nuestro disco duro. Supongamos que el espacio del disco duro NO es ilimitado. Y supongamos que hemos de automatizar el proceso.

Bien, para eso es el script de hoy. Notar que es una modificación de otro existente en el Script Center Script Repository de Microsoft: http://www.microsoft.com/technet/scriptcenter/scripts/storage/folders/stfovb22.mspx
El código final del script está disponible en nuestra sección de descargas bajo el nombre de MoverDosier.vbs

Solución planteada

Realmente es muy sencilla. Basta coger el código de http://www.microsoft.com/technet/scriptcenter/scripts/storage/folders/stfovb22.mspx y añadirle 3 lineas más de código.

Por supuesto, le pasamos 3 parámetros: CarpetaOrigen, CarpetaDestino y "edad" (en días) de la creación de la carpeta.

Usamos la función "Int" del VB en el "IF" antes que la "DateDiff" para comprobar si se cumple la condición de antigüedad. El motivo es que la segunda no es siempre exacta en cuanto al resultado. Ya se sabe que trabajar con fechas siempre tiene sus complicaciones, mientras que al hacerlo directamente con números la cosa se simplifica.

Evidentemente, si se cumple la condición, se mueve la carpeta al destino especificado.

Podríamos complicar un poco más el script si quisiéramos evitar que ciertas carpetas se movieran o que no lo hicieran. Para ello, deberíamos usar la función "InStr" después del "IF" (se podría usar también antes, pero es menos eficiente, bajo mi punto de vista) y mirar si alguna carpeta tiene (o no tiene) cierto nombre y NO moverla. También podemos usar otra función llamada "Mid" si sabemos exactamente en qué posición está la letra o letras que buscamos.

Por cierto, al igual que se mueven, se podrían borrar cambiando la instrucción .MoveHere por objFolder.Delete (y algún que otro cambio que os dejo que miréis)

Marc

MCP - MVP Windows - Shell/User