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.