En uno de nuestros servidores de archivos de Windows 2003 de alguna manera alguien o algo logró crear árboles de directorios infinitamente recurrentes dentro de algunas de las carpetas de inicio de los usuarios, y no se pueden eliminar.
Terminas con algo como esto:
D:\Student\2012\user.name\servername\student\2012\user.name\servername\student\2012\...
Y continúa infinitamente hasta donde he podido decir.
Intentar eliminar el árbol de directorios del sistema reside en los resultados en "Error al eliminar archivo o carpeta: no se puede eliminar el archivo:". Intentar eliminarlo de un sistema Windows 7 conectado a la red comparte resultados en un error de "carpeta en uso".
Si navega hacia abajo por el árbol de directorios hasta donde llega, eventualmente llega a un directorio que no se puede abrir o eliminar (si se hace clic con el botón derecho no aparece ninguna de las opciones estándar), sin embargo, si intenta abrir el mismo directorio desde un recurso compartido en otro sistema se puede abrir, sin embargo, el Explorador de Windows se vuelve extremadamente lento.
He intentado las sugerencias en esta publicación, así como arrancar el servidor con un disco de Linux e intentar rm -rf el directorio, ninguno funcionó.
Es un misterio.
Editar: también podría agregar que es posible cambiar el nombre de los directorios, simplemente no eliminarlos.
Respuestas:
También tenía una carpeta infinitamente recursiva que había sido creada por un IDE de Java, y no pude eliminarla ni en el Explorador de Windows ni en el indicador de cmd.
Sin embargo, cuando instalé git también instalé git-bash. En git-bash puedes emitir el comando:
y se encargará de eso.
fuente
Es posible que haya un enlace simbólico a una carpeta en algún lugar, muy probablemente el segundo
student
en su camino.Intenta ejecutar el comando:
y ver si
student
está marcado como DIR o SYMLINK / JUNCTION.Por ejemplo, esta es una salida típica del
dir
comando:Verá que las dos primeras entradas están marcadas como
DIR
, mientras que la tercera (un enlace simbólico a otra carpeta) está marcada comoSYMLINKD
. En su caso (Windows 2003) creo que hayJUNCTION
s en lugar deSYMLINK
s.Si la
student
carpeta es un enlace o unión simbólica, ejecute los comandos:y así deshacerse de la recursividad.
fuente
Es posible que quien estaba trabajando en esa carpeta gestionar para crear un punto de unión que vuelve de nuevo a partir
user.name
deservername
, creando así un árbol de directorio 'bucle infinito'.Las uniones son una característica del sistema de archivos NTFS que le permite crear un enlace simbólico a un directorio que funciona como un alias del directorio. http://en.wikipedia.org/wiki/NTFS_junction_point
Puede ver en la sección "Efectos observados" de la página wiki el problema que describe.
Intente ejecutar esta utilidad para enumerar uniones en ese servidor:
http://technet.microsoft.com/en-us/sysinternals/bb896768
También debería darle la posibilidad de eliminar el punto de unión.
fuente
Tuve un problema similar cuando eclipse creó un árbol de carpetas masivamente profundo que no pude eliminar. Sin embargo, dado que era posible mover y cambiar el nombre de las carpetas, escribí un archivo por lotes para que funcione en el árbol eliminando carpetas una a la vez y ¡esto funcionó! Para un árbol de carpetas aparentemente profundo de FOLDERNAME en el directorio C, es decir
Archivo por lotes :
Esto funciona porque TEMPFOLDERNAME ahora es un árbol de longitud finita (una sola carpeta sin nada) y el enorme árbol FOLDERNAME tiene una carpeta menos cada vez que se ejecuta el bucle, llegando finalmente a la parte inferior al eliminar una carpeta en la parte superior.
fuente
Me encontré con el mismo problema con un desorden de carpetas de más de 5000 directorios que algunas aplicaciones Java y escribí esto:
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
Resolvió mis directorios de bucle sin fin con este script:
fuente
Yo tuve el mismo problema. La carpeta que quería eliminar contenía un árbol interminable de enlaces con el mismo nombre y cada intento de eliminarlo provocó que Windows arrojara el error "Archivo demasiado largo ...". Falló independientemente del comando que intenté, incluidos todos los métodos anteriores, así que probé el comando "rm" de Cygwin en una ventana de cmd justo encima de la carpeta en cuestión. Ingresé "rm -r -f [carpeta]" y la carpeta se eliminó sin quejas.
Puede descargar Cygwin de forma gratuita desde https://cygwin.com/install.html . Básicamente es un shell de UNIX para Windows que contiene todos los comandos comunes (por ejemplo, ls, rm, du y cat), pero también tiene una tonelada de paquetes que, si se descargaran, ocuparían aproximadamente 1 GB de espacio. Creo que el paquete de descarga predeterminado incluye los comandos UNIX. Si no, están en el paquete "utils" si la memoria sirve.
NOTA: No necesita ejecutar comandos de Cygwin en su ventana de shell bash nativa. Se pueden ejecutar en una ventana cmd agregando la ruta al directorio "bin" de cygwin a la variable de entorno PATH de su sistema. En mi caso agregué "C: \ cygwin64 \ bin".
Espero que esto ayude.
fuente
Tengo el mismo problema aquí.
En otras publicaciones se sugirió reflejar una carpeta vacía en la carpeta de destino a través del recurso compartido de red con MS RoboCopy.
En este momento correcto estoy ejecutando esto, con "> nul" para acelerar (lo hace, realmente):
"C: \ TEMP" es una carpeta vacía y "W: \ TMP" es la carpeta afectada :
robocopy / mir c: \ temp \ 127.0.0.1 \ w $ \ tmp> nul
fuente
Yo también tuve esto, en un sistema independiente de Windows 10. C: \ Usuario \ Nombre \ Repetir \ Repetir \ Repetir \ Repetir \ Repetir \ Repetir \ Repetir aparentemente hasta el infinito.
Según el OP, podría navegar usando Windows o el símbolo del sistema hasta aproximadamente el 50 y no más. No pude eliminarlo, ni hacer clic en él, etc. exactamente como se describe.
C es mi lenguaje, así que eventualmente escribí un programa con un ciclo de llamadas al sistema, que se repiten hasta que fallan. Según el código de DOS de JohnO, hice un directorio llamado tmp y moví Repeat \ Repeat a eso, eliminé la carpeta de repetición ahora vacía y moví tmp \ Repeat nuevamente a la carpeta actual. ¡Una y otra vez!
ChkSystem simplemente ejecuta una llamada system () y verifica el valor de retorno, deteniéndose si falla.
Es importante destacar que falló varias veces. Pensé que quizás mi programa no funcionaba, o que era infinitamente largo después de todo. Sin embargo, he tenido esto antes con llamadas al sistema, con cosas que no se sincronizan, así que simplemente ejecuté el programa nuevamente y continuó desde donde se quedó, así que no piense que su programa no está funcionando. En total, después de ejecutarlo unas 20 veces, los eliminó a todos. En total, tenía unas 1280 carpetas de profundidad originalmente. No tengo idea de qué lo causó. Loco.
fuente
Con directorios de bucle de 3 niveles:
fuente
Lo solucioné ejecutando chkdsk / f a través de la consola de administración, reinicié y luego utilicé la eliminación del explorador de archivos. Aunque Windows se quejó del archivo / carpeta largo, se deshizo de la problemática carpeta recursiva una vez que confirme que la borraba.
No estoy seguro si hay otros problemas que podría haber creado usando la antigua opción chkdsk en mi sistema de archivos Windows 7 Pro.
fuente
Para mí, esta variación del método RoboCopy de Windows funcionó:
Sí, lleva tiempo pero hizo el trabajo.
fuente
Simplemente ejecute MS ROBOCOPY de la siguiente manera:
. . . . . . . . . . . . . . .
ROBOCOPIA "C: \ anyplace \ BADFOLDER" "C: \ donde sea \ BADFOLDER" / MIR
Dónde:
C: \ anyplace \ BADFOLDER .. es la "carpeta vacía" que creó, y
C: \ where \ BADFOLDER .. es la carpeta donde se encuentra el "árbol de directorios infinitamente recurrente".
. . . . . . . . . . . . . . .
Después de que se ejecuta ROBOCOPY ... Ahora tiene dos CARPETAS "vacías".
Para limpiar, elimine ambos
C: \ anyplace \ BADFOLDER y C: \ donde sea \ BADFOLDER
fuente