En muchas ocasiones nos es necesario ejecutar (por ejemplo vía tareas programadas de Windows según una planificación) la eliminación masiva de archivos o directorios de una ruta determinada (archivos temporales, logs de aplicaciones).
Para ello, podemos utilizar los siguientes scripts o batch de línea de comandos de CMD:
Primera opción, un script en VBS en el que indicamos en la constante "DIAS", el número de días que queremos conservar en base a la fecha de los ficheros, y en la constante "DIRECTORIO, la ruta sobre la que efectuar el borrado:
Option Explicit
Dim objNetwork
Const DIAS = 90
Const DIRECTORIO = "C:\WINDOWS\system32\LogFiles\W3SVC1012394340"
Call s_BorrarFicheros(DIRECTORIO)
Sub s_BorrarFicheros(str_Ruta)
Dim OBJETO, PROPIEDAD, ARCHIVO, CARPETA
Set OBJETO = WScript.CreateObject("Scripting.FileSystemObject")
Set PROPIEDAD = OBJETO.GetFolder(str_Ruta)
For Each ARCHIVO in PROPIEDAD.Files
If DateDiff ("d", ARCHIVO.DateLastModified, Now) > DIAS Then
ARCHIVO.Delete (True)
End If
Next
For Each CARPETA In PROPIEDAD.SubFolders
Call s_BorrarFicheros(CARPETA.Path)
Next
Set CARPETA = Nothing
Set ARCHIVO = Nothing
Set PROPIEDAD = Nothing
Set OBJETO = Nothing
End Sub
Otra opción, el comando forfiles, al que psamos la ruta en el parámetro -p y el número de días a conservas con el parámetro -d:
forfiles -s -p "C:\TEMP" -c "cmd /c echo del /Q /F @PATH & del /Q /F @PATH & RD /Q /S @PATH" -d -3
Y otra más, un "bat" para eliminar subdirectorios y su contenido a partir de la ruta definida en cursiva:
@echo off
pushd "C:\TEMP"
del /q *.*
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
popd
pushd
Excelente información y aporte mi estimado amigo, muchísimo gracias.
ResponderEliminar