Windows: Borrar rutas largas

En ocasiones, al intentar borrar estructuras de ficheros y carpetas, nos podemos encontrar con el error: la ruta es demasiado larga.

Para solucionar el problema de borrar rutas largas hay múltiples opciones e incluso existen programas de terceros para eliminar este tipo de estructuras.

Existe una opción muy rápida de ejecutar que consiste en utilizar la herramienta robocopy.

La herramienta Robocopy ("Robust File Copy") está diseñada para realizar copias de estructuras de ficheros y es muy similar a XCopy pero con muchas mas opciones.


Podemos utilizar la herramienta robocopy en cualquier versión de Windows:
  • Para sistemas XP, Windows Server 2003, encontraremos robocopy dentro de Windows Server 2003 Resource Kit.
  • Para sistemas Windows Vista / Windows Server 2008 o superior ya está integrada en el sistema.
En este caso, utilizaremos el parámetro /MIR de Robocopy.

El parámetro /MIR, realiza un espejo (mirror) del origen al destino.

El "truco" es que con /MIR, si el origen es una carpeta vacía se eliminarán todos los ficheros y directorios del destino, con lo que también se eliminarán las rutas largas.

Como medida de seguridad añadiremos los siguientes parámetros:

/XJD /XJF /R:1 /W:1

  • Con /XJD y /XJF realizaremos una exclusión de junctions y symbolic links, por si hay alguno de estos elementos que nos pueden situar fuera de la estructura de directorios que especifiquemos.
  • Con /R:1 /W:1: Configuramos el número de reintentos si se producen errores a: 1 segundo y un tiempo de espera entre reintentos a: 1 segundo.

Podemos obtener ayuda sobre los parámetros disponibles, ejecutando: robocopy /?

Ejemplo:

Imaginemos que queremos eliminar toda la estructura de ficheros y directorios a partir de D:\FILES\yyyyy\ :

Ejecutaríamos:

robocopy C:\CARPETA-VACIA D:\FILES\yyyyy /MIR /XJD /XJF /R:1 /W:1

Podemos obtener más información sobre la herramienta robocopy así como información práctica orientada a la administración de servidores de ficheros Windows, en el libro: WFS - Windows File Server (SYSADMIT.com)

Si los ficheros y carpetas con rutas largas  residen en equipos con sistemas operativos Windows 10 o Windows Server 2016, podemos utilizar una GPO para tratar de evitar el problema:

"Ruta demasiado larga": Solución con GPO (SYSADMIT.com)

En este post, también podemos ver cómo listar cuales son las rutas largas a partir de cierta ruta:

Windows: Listar rutas largas (SYSADMIT.com)


12 comentarios:

  1. Buenísimo, yo mismo he pasado por este problema varias veces.

    ResponderEliminar
  2. Respuestas
    1. ¡Gracias!

      Me alegro que te haya funcionado.

      Un saludo,

      Xavi.

      Eliminar
  3. Gracias, es lo único que funcionaba cuando se tienen rutas superiores que un del o rd no puede borrar

    ResponderEliminar
    Respuestas
    1. Gracias a ti por tu comentario, me alegro que te haya funcionado.

      Un saludo,

      Xavi.

      Eliminar
  4. Gracias Xavi, me funcionó perfecto. Gracias.

    ResponderEliminar
  5. Excelente solución! Ya que en mi caso y en Windows Server 2016 al intentar un RMDIR en una tarea programada no me lo permitía cuando el usuario no tenía sesión iniciada. Con el ROBOCOPY y el /MIR conseguí realizarlo.

    ResponderEliminar
    Respuestas
    1. ¡Muchas gracias!

      Me alegro que te haya resultado útil.

      Un saludo,

      Xavi.

      Eliminar