Borrar carpetas también en un script

Tengo este código para borrar los archivos que grabo:

Forfiles -p "D:\Cameras\" -s -m *.avi -d -30 -c "cmd /c del @path /q"

Mi problema es que solo borra los archivos .avi, y quiero que borre también las carpetas dentro de esa carpeta Cameras.

1 respuesta

Respuesta
1

¿Has probado con

Forfiles -p "D:\Cameras\" -s -m *.avi -d -30 -c "cmd /c rd /s /q @path"

?

Hola. Lo acabo de probar, pero, aunque me borra las carpetas, no me hace lo que estoy buscando. Quizá no me expliqué bien. Te hago un esquema:

CARPETA CÁMARAS
    SUBCARPETA CÁMARA 1
        SUBCARPETA CON LA FECHA DE AYER
            Vídeo
        SUBCARPETA CON LA FECHA DE HOY
            Vídeo
    SUBCARPETA CÁMARA 2
        SUB-SUBCARPETA CON LA FECHA DE AYER
            Vídeo
        SUB-SUBCARPETA CON LA FECHA DE HOY
            Vídeo

Vale, pues quiero que me borre tanto las carpetas y vídeos que no sean de hoy, para que el resultado sea este:

CARPETA CÁMARAS
    SUBCARPETA CÁMARA 1
        SUB-SUBCARPETA CON LA FECHA DE HOY
            Vídeo
    SUBCARPETA CÁMARA 2
        SUB-SUBCARPETA CON LA FECHA DE HOY
            Vídeo

¿Esto se puede conseguir con un script solo? ¿O es mejor añadir un script en cada subcarpeta (la de cada cámara)?

¡Gracias!

Si te he entendido bien quieres borrar todas las subcarpetas contenidas en la carpeta indicada (D:\Cameras) cuya fecha sea anterior a N días sin que importe su contenido (digamos 15) y todos los archivos de extensión AVI de fecha anterior a N días.

No tengo gran experiencia con FORFILES (soy un poco viejo y ya no tengo muchas ocasiones de probar las cosas nuevas) pero he hecho algunas pruebas y creo que este BAT podría hacer lo que quieres:

@echo off
forfiles -p d:\Cameras -s -d -30 -c "cmd /c if @isdir==TRUE echo rd /s /q @path"
Forfiles -p d:\Cameras -s -m *.avi -d -30 -c "cmd /c echo del @path"

Creo que hay que borrar en primer lugar las carpetas porque si se hace al revés (borrar primero los archivos individuales) se modificaría la fecha de las carpetas que los contienen a la fecha actual por lo que luego ya no cumplirian la condición de borrado. De momento he precedido los comandos de borrado de un ECHO para que simplemente liste el comando que se ejecutaría. Si te parece que la cosa va bien puedes quitar los ECHOs para hacer efectivos los borrados.

He dicho 15 y luego he aplicado 30, pero se entiende, ¿no?

Hola, lo he probado pero no funciona. Te dejo un enlace explicando lo que hago, a ver si tú ves el error, porque yo no.

https://www.dropbox.com/s/1xu8ef0rnjgtunm/TE.mp4?dl=0 

Muchas gracias.

Yo suprimí las comillas del path de inicio porque no tenía espacios pero he visto que el que has puesto en la prueba sí que los tiene. De modo que, de momento, tendrás que poner algo como:

forfiles -p "c:\users\Usuario\00 Diego\Bandeja de entrada\Cameras" -s -d -30 -c "cmd /c if @isdir==TRUE echo rd /s /q @path"
Forfiles -p "c:\users\Usuario\00 Diego\Bandeja de entrada\Cameras" -s -m *.txt -d -30 -c "cmd /c echo del @path"
Pause

No he quitado los ECHO y he añadido un PAUSE para que puedas ver lo que te diga en los echo antes de cerrar la ventana. Así podrás ver si va bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas