Archivo .bat para eliminar carpetas vacías de un directorio

Archivo bat para eliminar carpetas vacías de un directorio, y generar un txt de las carpetas eliminadas.

Estas carpetas estan dentro de otras carpetas sin importar que sus nombres tengas espacios

2 Respuestas

Respuesta
2

Espero a alguien más le sirva esta info, este escrip borra todos los archivos y subcarpetas que contiene la ruta que indiques.

yo use este escrip por en windos 10 solo al usar " del /f /s /q *.* C:\Ruta\de\carpeta " no me borraba las subcarpetas

@echo off
cd C:\Ruta\de\carpeta
del /f /s /q *.* C:\Ruta\de\carpeta
rd /s /q C:\Ruta\de\carpeta
exit

Respuesta
1

Curiosamente no me entró esta pregunta por la vía habitual (el correo electrónico que tengo registrado en la página). Hoy la vi cuando entré para otra cosa.

Te sugiero que te sitúes en el directorio del que quieres borrar las carpetas vacías y pruebes esto:

@echo off
for /f "tokens=*" %%a in ('dir /ad/b/s') do call :tratar "%%a"
goto :eof
:tratar
set a=%1
rd %1 2>kk.txt
for /f %%k in (kk.txt) do if not "%%k"=="" goto :eof
>> d:\bat\borrdir.txt echo Se ha borrado el directorio %1 el %date% a las %time%
goto :eof

Se basa en que el comando RD (remove directory) con la sintaxis utilizada no borra directorios que no estén vacíos. Pero el problema era conseguir una forma de registrar en un TXT los borrados efectuados. Para eso he tenido que montar todo ese "tinglado". Cuando el directorio no está vacío el RD saca el mensaje "El directorio no está vacío." y no hace nada. Ese mensaje lo capturo en el archivo kk.txt (si existiera previamente en ese directorio y se quiere conservar habría que usar otro nombre) y a continuación miro si tiene algo. Si no tiene nada es que el borrado ha sido efectivo y lo registro en el BORRDIR.TXT anotando la fecha y la hora.

Ya nos dirás si te sirve.

¡Gracias! 

Muchas gracias, sin duda es un profesional (Y)

Me alegro de que te haya servido. Había hecho un retoque en el bat, pero parece que hubo algún problema en el envío porque no lo veo en la página. Es que me di cuenta de que sobraba una instrucción ("set a=%1") y que me había dejado un resto de mi "entorno de pruebas" (el destino del archivo TXT). En realidad el bat debería haber quedado así:

@echo off
for /f "tokens=*" %%a in ('dir /ad/b/s') do call :tratar "%%a"
goto :eof
:Tratar
rd %1 2>kk.txt
for /f %%k in (kk.txt) do if not "%%k"=="" goto :eof
>> borrdir.txt echo Se ha borrado el directorio %1 el %date% a las %time%
goto :eof

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas