Compartir a través de

Comando para borrar archivos y subdirectorios desde CMD

Anónimas
2024-05-16T20:04:20+00:00

Buenas tardes,

Estoy intentando borrar un conjunto de archivos y directorios mediante un archivo .bat, pero no doy con el comando correcto.

La estructura de carpetas que tengo es la siguiente:

CarpetaPadre

---- SubcarpetaUsuario1

----------------- Carpetas con contenido (Archivos u otras carpetas)

----------------- Archivos: Word, Excel, etc.

---- SubcarpetaUsuario2

----------------- Carpetas con contenido (Archivos u otras carpetas)

----------------- Archivos: Word, Excel, etc.

---- SubcarpetaUsuario3

----------------- Carpetas con contenido (Archivos u otras carpetas)

----------------- Archivos: Word, Excel, etc.

---- Archivos: Word, Excel, etc.

Necesitaría eliminar todo el contenido de las subcarpetas que incluyen otras carpetas y archivos y a la vez borrar todos los archivos de la CarpetaPadre que no sean subcarpetas de usuarios tal que así:

CarpetaPadre

---- SubcarpetaUsuario1

----------------- (Vacío)

---- SubcarpetaUsuario2

----------------- (Vacío)

---- SubcarpetaUsuario3

----------------- (Vacío)

---- (Vacío)

Estoy haciendo pruebas pero no consigo hacerlo totalmente, estoy un poco oxidado... He conseguido borrar los archivos de las subcarpetas pero me siguen quedando las carpetas de dentro pero sin contenido...

He visto una solución en la que se propone crear un archivo .txt con el nombre de las subcarpetas y luego ir iterando borrando todo el contenido, pero no lo veo factible ya que se pueden crear nuevas subcarpetas de usuario y de no mantenerlo las borraría también... la idea sería crear una tarea programada que lo ejecutase cada X días y no tener que mantenerlo.

He pensado que si hacer esto no es posible o es muy complejo, borrar todos los archivos de la CarpetaPadre que no sean SubcarpetasUsuarios y quitar permisos de modificación sólo para la padre, aunque estaría bien poder dejar la opción aunque luego se borrara...

¿Me podrías echar una mano, por favor?

Windows para el hogar | Windows 10 | Configuración

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

4 respuestas

Ordenar por: Muy útil
  1. Anónimas
    2024-05-20T03:13:56+00:00

    Para ayudar a nuestros usuarios, utilizamos un servicio de traducción. Por favor, disculpe cualquier error gramatical.

    ¿Quieres decir que quieres eliminar una carpeta completa usando CMD?

    Probar:
    del /F /S /Q C:\Nombre de la carpeta

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios
  2. Anónimas
    2024-05-18T16:42:21+00:00

    Buenas tardes,

    Al final encontré una solución enfocándolo como me decías y a base de prueba-error:

    @echo off

    setlocal

    set "CarpetaPadre=C:\ruta\a\CarpetaPadre"

    REM Eliminar archivos en la CarpetaPadre

    del /q "%CarpetaPadre%\*.*"

    REM Iterar a través de cada subcarpeta y eliminar su contenido

    for /d %%d in ("%CarpetaPadre%\*") do (

    REM Eliminar archivos dentro de la subcarpeta

    del /s /q "%%d\\*.\*" 
    
    REM Eliminar subcarpetas dentro de la subcarpeta 
    
    for /d %%s in ("%%d\\*") do ( 
    
        rmdir /s /q "%%s" 
    
    ) 
    

    )

    endlocal

    Muchas gracias por tu apoyo y el tiempo de responder a mi pregunta, me ha servido para encaminarlo.

    Saludos

    0 comentarios No hay comentarios
  3. Anónimas
    2024-05-18T12:48:09+00:00

    Buenas tardes,

    Muchas gracias por la respuesta y tu ayuda. He probado con ese script pero me borra las subcarpetas de los usuarios y me sigue dejando los archivos que quería eliminar de la carpeta padre tal que así:

    CarpetaPadre

    ---- Archivos: Word, Excel, etc.

    Saludos

    0 comentarios No hay comentarios
  4. Anónimas
    2024-05-16T23:58:45+00:00

    Hola, Stingray010. Lamento saber que tiene este problema y espero poder ayudarlo a encontrar una solución satisfactoria.

    Claro, puedo ayudarte con eso. Para lograr lo que necesitas, puedes usar el comando del para eliminar archivos y el comando rd /s /q para eliminar directorios y su contenido de manera recursiva desde un archivo por lotes (.bat).

    Aquí tienes un ejemplo de cómo podrías estructurar tu archivo .bat para lograr lo que buscas:

    @echo off

    cd "C:\ruta\a\tuCarpetaPadre" REM Cambia "C:\ruta\a\tuCarpetaPadre" por la ruta de tu CarpetaPadre

    REM Elimina todos los archivos en la CarpetaPadre que no son subcarpetas de usuario

    for %%i in (*) do (

    if not exist "%%i\." (
    
        del "%%i" /q
    
    )
    

    )

    REM Elimina el contenido de las subcarpetas que incluyen otras carpetas y archivos

    for /d %%i in (*) do (

    rd /s /q "%%i"
    

    )

    echo Proceso completado.

    Asegúrate de cambiar "C:\ruta\a\tuCarpetaPadre" por la ruta real de tu CarpetaPadre.

    Este script primero elimina todos los archivos en la CarpetaPadre que no son subcarpetas de usuario. Luego, elimina el contenido de todas las subcarpetas que incluyen otras carpetas y archivos. El uso de /s y /q con el comando rd permite eliminar directorios y su contenido de manera recursiva sin solicitar confirmación.

    Es importante tener en cuenta que este script eliminará permanentemente los archivos y directorios que coincidan con los criterios mencionados. Asegúrate de hacer una copia de seguridad de tus datos importantes antes de ejecutar el script.

    Espero haber ayudado

    0 comentarios No hay comentarios