Borrar archivos sin eliminar el arbol de carpetas en PowerShell

publicado por: Anonymous

Tengo este script escrito en Powershell para eliminar archivos de un servidor usando su fecha de creación.

$datapath = "C:UsersAlumnoDesktoptest"
dir $datapath| ?{($_.creationtime.adddays(2) -lt (get-date))} | remove-item -force -Recurse

¿Como podría hacer para que se eliminara SOLO los archivos?. Es decir, que siempre que ejecute el script se borren todos los archivos viejos pero que las carpetas por muy viejas que sean queden intactas

solución

En vez de usar dir, puedes comenzar con el comando Get-ChildItem para enlistar todos los objetos y de ahí, separar los que cumplen con la antigüedad que defines y con la particularidad de que no sean directorios:

$datapath = "C:UsersAlumnoDesktoptest"
Get-ChildItem $datapath -Recurse | ?{($_.creationtime.adddays(1) -lt (Get-Date))} | Where { ! $_.PSIsContainer } | Remove-Item

Con el código anterior se borrarán los archivos y se mantendrá la estructura de carpeta. El filtro para ello es el bloque:

Where { ! $_.PSIsContainer }

Donde indicamos que no sea una carpeta.

Espero haber resuelto el problema.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *