Más de una vez me ha levantado dolores de cabeza el intentar eliminar subdirectorios largos en Windows. Ocurre a veces cuando hacemos una mala copia o restauración desde un backup; en ocasiones, también puede pasar cuando un usuario es demasiado organizado con sus directorios personales.
Cuando intentamos borrar un directorio de estas características vamos a ver errores tipo «TOO LONG» o «El fichero ya no está en ese directorio«.
Hoy tuve uno de estos problemas (bastante gordo) y ni RD, ni subst ni leches.
Tuve que recurrir a una solución perdida en el limbo de los foros que usa robocopy y un fichero .bat.
Para ello solo necesitamos tener robocopy.exe en el path (o en el directorio de ejecución del .bat) y crear este fichero de cabecera:
@echo off if {%1}=={} @echo Syntax: DelFolder FolderPath&goto :EOF if not exist %1 @echo Syntax: DelFolder FolderPath - %1 NOT found.&goto :EOF setlocal set folder=%1 set MT="%TEMP%\DelFolder_%RANDOM%" MD %MT% RoboCopy %MT% %folder% /MIR RD /S /Q %MT% RD /S /Q %folder% endlocal
El fichero se cargará todo lo de dentro del directorio especificado sin clemencia alguna y le importará poco la longitud total de los ficheros o subdirectorios.