domingo, 28 de julio de 2019

Remover un directorio y todo su contenido en OS Windows

Para eliminar un directorio con una gran cantidad de archivos o un directivo recursivo (en mi caso con mas de 10k archivos vacios recursivos dentro) he llegado con la siguiente solución:

@ECHO OFF
ECHO Delete Folder: %CD%?
PAUSE
SET FOLDER=%CD%
CD /
DEL /F/Q/S "%FOLDER%" > NUL
RMDIR /Q/S "%FOLDER%"

EXIT


Guardas este codigo dentro de un nuevo archivo y le pones un nombre (en mi caso fast_delete) con extension .bat (fast_delete.bat). Y luego lo puedes ejecutar desde el CMD señalando la carpeta a eliminar en SET FOLDER.


Pero antes les dejo un background de todo lo que intenté. Hay muchas soluciones en internet con líneas de comando en windows, pero eso no era suficiente para mi caso porque el directivo a eliminar era tan grande que llega un momento y el codigo en línea de comandos paraba y ya no podia eliminar mas archivos. Entonces instalé GitBash en Windows y ejecute el siguiente codigo en Git:


rm -rf <directorio>



El git bash, es una herramienta de tipo consola que básicamente te permite manipular y gestionar todo como CMD o PowerShell.
Eso solucionó mi problema, pero me puse a investigar más y encontré valiosa información para ejecutar el código en forma nativa y elegante añadiendo una opción al menu de contexto del Explorador de Windows. Los créditos son para Martin Brinkmann.
Una vez tengas listo tu archivo fast_delte.bat, tienes que agregar tu archivo a un directorio que sea PATH environmental variable, puedes crear un directorio o simplemente cortar y pegar el archivo en el directorio C:\Windows.
Luego añades la opción al menu de contexto del explorador a traves del Editor de Registro asi:

  1. Presionas la tecla de Windows, escribes regedit.exe y presionas Enter para abrir el Editor de Registro de Windows.
  2. Confirmas el mensaje UAC.
  3. Vas hacia HKEY_CLASSES_ROOT\Directory\shell\
  4. Click derecho en Shell y seleccionas New > Key.
  5. Pones el nombre de la key como: Fast Delete, o el nombre que quieras.
  6. Click derecho en Fast Delete y seleccionas New > Key.
  7. El nombre del key pones: command.
  8. Doble-click en default de la command key.
  9. Añades cmd /c "cd %1 && fast_delete.bat" como valor.
Luego tendras lista la opcion en tu menu, aparecerá algo como lo siguiente:


Cuando le des click tendras que confirmar la eliminación del archivo en caso de que ejecutes por error este comando, para lo cual si quieres cancelar deberas presionar Ctrl+C, si presionas cualquier otra tecla el archivo se eliminará.