Eclipse creó una carpeta temporal en uno de los directorios que está anidada bastante profundo, por ejemplo
dir1\dir1\dir1\dir1\...
No puedo eliminar esta carpeta en Windows a través del Explorador, los comandos del
o rmdir
, ni el comando 'rm' de Cygwin. ¿Cómo debo eliminar esta carpeta muy larga?
Simplemente sigue diciendo "Nombre de archivo demasiado largo ..."
Respuestas:
Si eres como yo y no te gusta instalar software adicional para solucionar un problema como este, iría con la sugerencia y uso de XQYZ
robocopy
para resolver el problema. (En mi caso, el problema fue creado por robocopy en primer lugar, copiando un directorio que tenía puntos de unión recursivos sin suministrar / XJ a robocopy).Para eliminar el árbol de directorios que comienza en c: \ subdir \ more \ offending_dir :
El proceso total paso a paso es tan simple como esto:
cd c:\subdir\more
para cd en su directorio padre.mkdir empty
para crear un directorio vacíorobocopy empty offending_dir /mir
para reflejar el directorio vacío en el ofensivo.rmdir offending_dir
para deshacerse del directorio ofensivo ahora vacío yrmdir empty
para deshacerse de su directorio vacío intermedio.fuente
robocopy
y puntos de unión; ¡Gracias por mostrarme cómo usarlo para limpiar el desorden!Esto es realmente bastante simple de arreglar. Digamos que la estructura del directorio es como tal:
Para solucionarlo, simplemente cambie el nombre de cada carpeta a un nombre de carpeta de un carácter hasta que ya no sea demasiado largo para eliminar:
C:\Dir1
aC:\D
C:\D\
C:\D\Dir1
aC:\D\D
C:\D\D\
Aquí hay un archivo por lotes para automatizar el proceso (esta versión simple es mejor para directorios simples como el descrito en la pregunta, especialmente para los desechables). Páselo a la carpeta más alta posible (por ejemplo,
C:\Dir1
paraC:\Dir1\Dir1\Dir1…
oC:\Users\Bob\Desktop\New Folder
paraC:\Users\Bob\Desktop\New Folder\abcdefghi…
)Explicación técnica
Las otras soluciones propuestas son al revés; no puede solucionarlo trabajando desde el directorio más interno hacia afuera, debe ir en la otra dirección.
Cuando intenta acceder a un directorio, lo hace utilizando su ruta absoluta, ya sea explícitamente o no, que incluye todo lo que vino antes. Por lo tanto, para una estructura de directorio como
C:\Dir1\Dir1\Dir1\Dir1
, la longitud de la ruta al más internoDir1
es 22. Sin embargo, la longitud de la ruta al más externoDir1
es solo 7 y, por lo tanto, aún es accesible independientemente de su contenido (en el contexto de la ruta de un directorio dado , el sistema de archivos no tiene conocimiento de lo que contiene o el efecto que tiene sobre la longitud total de la ruta de sus directorios secundarios; solo sus directorios antecesores; no puede cambiar el nombre de un directorio si la longitud total de la ruta será demasiado larga).Por lo tanto, cuando encuentre un camino que es demasiado largo, lo que debe hacer es ir al nivel más alto posible y cambiarle el nombre a un nombre de un carácter y repetirlo para cada nivel. Cada vez que lo hace, la longitud total de la ruta se acorta por la diferencia entre el nombre antiguo y el nuevo.
Lo contrario también es cierto. No puede crear una ruta que sea mayor que la longitud máxima admitida (en DOS y Windows,
MAX_PATH = 260
). Sin embargo, puede cambiar el nombre de los directorios, trabajando desde lo más interno hacia afuera, a un nombre más largo. El resultado es que las carpetas más profundas cuya ruta absoluta es> 260 serán inaccesibles. (Eso no los hace "ocultos" o seguros, ya que son lo suficientemente simples como para llegar a ellos, así que no use este método para ocultar archivos).Nota al margen interesante
Si crea carpetas en el Explorador de Windows 7, puede parecer que el Explorador le permite crear subdirectorios de modo que la longitud total sea más larga que
MAX_PATH
, y en realidad lo es, sin embargo, en realidad está haciendo trampa usando "nombres de archivo DOS 8.3". Puede ver esto creando un árbol como el siguiente:Tiene 696 caracteres de largo, que por supuesto es mucho más largo que 260. Además, si navega al subdirectorio más interno en Explorer, lo muestra como se espera en la barra de direcciones cuando no está enfocado, pero cuando hace clic en la dirección barra, cambia la ruta a
C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, que tiene solo 102 caracteres de longitud.En XP, no hace esto, sino que se niega firmemente a crear una ruta más larga de lo que es compatible.
Lo que sería realmente interesante es descubrir cómo el Explorador de Windows 7 maneja "rutas demasiado largas" cuando
NtfsDisable8dot3NameCreation
se establece la opción.fuente
\\?` doesn't work with
rmdir`.\\?\C:\dir\dir\dir\dir
literalmente omiten MAX_PATH; no hay "variables" involucradas. (Pero como dije, no funciona conrmdir
u otroscmd.exe
componentes integrados por alguna razón)md C:\01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
No funcionará porque el sistema de archivos tiene suficiente información para determinar que la longitud total de la ruta sería de 263 caracteres, por lo que falla.Puede acortar la ruta utilizando
subst
para crear una unidad virtual:Cambie a la unidad virtual:
Ahora puedes eliminar los archivos:
Retire la unidad virtual:
Eliminar el directorio:
fuente
C:\TEMP\dir1\dir1\dir1
, acortará parte de él, lo que le permitirá ingresar. Es como su sugerencia de cambio de nombre, pero con mapeo en su lugar. ;):-)
Escribí una pequeña aplicación C # para ayudarme a eliminar una estructura muy profunda similar generada por un uso descuidado de Robocopy y una copia de seguridad de Homeserver; de forma predeterminada, Robocopy trata los puntos de unión como carpetas normales ... :-( Podría terminar con un gran desorden sin darse cuenta.
La herramienta está disponible en CodePlex con archivos fuente, para que cualquiera pueda usarla.
fuente
Hace algún tiempo creé un pequeño ejecutable de utilidad autónomo llamado DeleteFiles que puede usar para realizar esta tarea fácilmente.
Usando esta utilidad autónoma, simplemente puede hacer:
para eliminar toda la estructura de carpetas. -r recursivamente la jerarquía de carpetas del directorio de empezar a bajar, -f elimina todas las carpetas que están vacíos (que serán todos ellos si se utiliza . como la especificación de archivo). DeleteFiles admite rutas más largas que el límite MAX_PATH de Windows, por lo que funcionará bien en carpetas profundamente anidadas.
DeleteFiles es gratuito y de código abierto y puede obtener el código binario o fuente de GitHub o instalarlo directamente usando Chocolatey
fuente
> NUL
al final puede hacer que el proceso sea más rápido.Simple y fácil ahora
Estaba enfrentando este mismo problema desde hace tanto tiempo con node_modules que carpetas muy anidadas. así que finalmente hice un script para arreglar lo que puede eliminar carpetas acortando las rutas.
https://github.com/dev-mraj/fdel
fuente
Mientras trabajaba con Sikuli, recibí un bucle de recursión Calculator.sikuli en el programa que hizo una cantidad incontable de directorios "calculator.sikuli.calculator.sikuli". Podría mover el árbol, pero el nombre de ruta es demasiado largo para eliminarlo.
Después de probar varias soluciones con bucle popd, Scandisk y llegar (perceptiblemente) a ninguna parte ...
Escribí este script para 'profundizar' en los directorios recurrentes (en un directorio llamado 'a'), moverlos (a un directorio llamado 'b'), luego eliminar el árbol truncado, moverlos de regreso (a 'a') , y repetir:
Remdirs.bat
Esto es solo una llamada para ejecutar el archivo por lotes nuevamente.
fuente
Tuvimos un problema como este en el trabajo cuando eclipse decidió crear basura en los discos duros. Lo arreglamos usando la función / MIR de robocopy para reflejar un directorio vacío en el anidado.
fuente
Intentaría abrir un símbolo del sistema y ejecutar:
Si eso no funciona, me quedaría en el árbol de directorios y trataría de eliminar un subconjunto de directorios, digamos los 20 directorios más internos, y luego saldría de allí.
fuente
;-)
Si se trata de una carpeta de red, simplemente comparta el directorio principal de ese directorio y asígnelo a una unidad en su máquina local y luego elimine su carpeta.
fuente
Abra un símbolo del sistema.
Navegue a la carpeta / directorio que contiene el 'dir1' más alto (asumiremos C: \)
Editar (después de agregar comentarios) :
Otras ideas:
MS ofrece información sobre cómo lidiar con el problema (muchas ideas para probar) aquí .
También existe esta herramienta (nunca la usé personalmente): TooLongPath .
¿Quizás escribir algo (ya que tiene Eclipse) que navega por completo y luego retrocede un nivel de carpeta a la vez, borrando a medida que avanza?
fuente
Otra solución: descarga Total Commander. Es un programa muy útil, no solo porque tiene un nombre de archivo largo.
La versión no registrada es nagware pero completamente funcional, hará el trabajo.
fuente
Esto se puede hacer directamente desde la línea de comandos o en un archivo por lotes construyendo una ruta UNC al directorio que desea eliminar
así que en lugar de
utilizar
Las rutas de estilo UNC como esta pueden ser mucho más largas y evitar el límite de 260 caracteres.
fuente
The path \\?\C:\temp\wqiyretiuqyertiuyqwteiyrutqwuiyertiqrqweirqyert\wqteriuwqyetriuqwteiryutwiuertiuyqerieerrt\IOQWUE~1\QIWUYE~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\ OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1 is too long.
Windows 7 de 64 bits.Cuando tengo este problema, simplemente cambio el nombre de algunos de los nombres de carpetas mucho más cortos, luego, una vez que la ruta total es lo suficientemente corta, se eliminará OK. No se necesitan herramientas adicionales.
fuente
ren
comando fallarápath too long
.Tuve el mismo problema, excepto que fue creado por una tarea recursiva de copia de seguridad de Cobian. Resulta que el software gratuito Cobian incluye una aplicación Deleter que puede eliminar fácilmente estas molestas carpetas anidadas súper rápidamente.
Se encuentra debajo del menú de herramientas.
fuente
Me encontré con el mismo problema con un desorden de carpetas de más de 5000 directorios que algunas aplicaciones Java y escribí un programa que te ayudará a eliminar esta carpeta. El código fuente completo está en este enlace:
https://gitlab.imanolbarba.net/imanol/DiREKT
Eliminó todo después de un tiempo, pero logró hacer el trabajo, espero que ayude a las personas que (como yo) se encuentran con el mismo problema frustrante
fuente
Su sistema de archivos puede estar dañado. Ejecute chkdsk para ver si repara algo, luego intente eliminar la carpeta.
fuente
MAX_PATH=255
). Esto puede suceder incluso con un sistema de archivos no dañado.