Usuario
Crear Bat para eliminar carpetas, exceptuando las 15 últimas creadas.

Pregunta
-
Hola!
Quisiera saber como eliminar archivos de un carpeta en la partición "D". Pero, siempre conservando las últimas 15 carpetas creadas.
Solo he encontrado información para eliminar todas las subcarpetas dentro de "D:\JPJ" :
@echo off
rmdir /s /q D:\JPJ\
md D:\JPJ\
¿Es posible eliminar todas menos las 15 últimas creadas?
Gracias de antemano.
Todas las respuestas
-
Hola Compañero,
En powershell sería sencillo, te lo dejo por si te vale:
$carpeta = "D:\JPJ\" $NumeroAConservar = 15 $MiArray = Get-ChildItem –Path $carpeta -Recurse | Sort-Object $_.CreationTime -Descending $MiArray[$NumeroAConservar..$MiArray.Length] | Remove-Item
Saludos,
-
Hola!
Muchas gracias por la respuesta.
Gracias por la respuesta. La verdad es que no conozco mucho powershell. Quería hacerlo como bat porque de esa forma lo puedo poner en task scheduler y hacer que se ejecute todos los días, o cada semana, según me convenga.
¿Powershell se puede poner en task scheduler para ejecutar periódicamente también o alguna otra forma?
Gracias,
Saludos
-
-
Hola!
Leyendo el código todo parece tener sentido, pero al ejecutarlo me borra por orden alfabetico. Es decir, si tengo 15 carpetas y creo una nueva llamada "1" al ejecutar el powershell borraría la última creada "1". Al hacer distintas pruebas me he dado cuenta que borra alfabéticamente.
¿Puede ser que algo en la sintaxis esté fallando? En principio debería ordenar por el tiempo de creación.
Gracias de antemano!
-
Hola,
Prueba a ejecutar solo esto y a ver que te muestra:
$carpeta = "D:\JPJ\" $NumeroAConservar = 15 $MiArray = Get-ChildItem –Path $carpeta -Recurse | Sort-Object $_.CreationTime -Descending
Debería mostrarte ordenados por fecha de Creación, el más nuevo arriba, yo lo estuvo probando y me funcionó sin problemas.
Saludos,