Sur l'un de nos serveurs de fichiers Windows 2003, quelqu'un ou quelque chose a réussi à créer des arborescences de répertoires infiniment récurrentes dans certains des dossiers de départ des utilisateurs, et ils ne peuvent pas être supprimés.
Vous vous retrouvez avec quelque chose comme ça:
D:\Student\2012\user.name\servername\student\2012\user.name\servername\student\2012\...
Et ça continue infiniment pour autant que je sache.
Si vous essayez de supprimer l'arborescence de répertoires du système sur lequel elle réside, "Erreur lors de la suppression du fichier ou du dossier: impossible de supprimer le fichier:". Essayer de le supprimer d'un système Windows 7 connecté au partage réseau entraîne une erreur «dossier en cours d'utilisation».
Si vous naviguez dans l'arborescence des répertoires aussi loin que vous le faites, vous atteignez finalement un répertoire qui ne peut pas être ouvert ou supprimé (si vous cliquez avec le bouton droit, aucune des options standard n'apparaît), cependant si vous essayez d'ouvrir le même répertoire à partir d'un partage sur un autre système il peut être ouvert, mais l'Explorateur Windows devient extrêmement lent.
J'ai essayé les suggestions de cet article, ainsi que le démarrage du serveur avec un disque Linux et en essayant de rm -rf le répertoire, ni travaillé.
C'est un mystère.
Edit: je pourrais également ajouter qu'il est possible de renommer les répertoires, mais pas de les supprimer.
Réponses:
J'avais également un dossier récursif sans fin qui avait été créé par un IDE java, et je n'ai pas pu le supprimer dans l'Explorateur Windows ou à l'invite cmd.
Cependant, lorsque j'ai installé git, j'ai également installé git-bash. Dans git-bash, vous pouvez lancer la commande:
et il s'en occupera.
la source
Il est possible qu'il y ait un lien symbolique vers un dossier quelque part, probablement le deuxième
student
sur votre chemin.Essayez d'exécuter la commande:
et voyez s'il
student
est marqué comme DIR ou SYMLINK / JUNCTION.Par exemple, il s'agit d'une sortie typique de la
dir
commande:Vous voyez que les deux premières entrées sont marquées comme
DIR
, tandis que la troisième (un lien symbolique vers un autre dossier) est marquée commeSYMLINKD
. Dans votre cas (Windows 2003), je pense qu'il y a desJUNCTION
s au lieu desSYMLINK
s.Si le
student
dossier est un lien ou une jonction symbolique, exécutez les commandes:et ainsi se débarrasser de la récursivité.
la source
Il est possible que la personne qui travaillait dans ce dossier parvienne à créer un point de jonction qui effectue une boucle de
user.name
àservername
, créant ainsi une arborescence de répertoires de `` boucle infinie ''.Les jonctions sont une fonctionnalité du système de fichiers NTFS qui vous permet de créer un lien symbolique vers un répertoire qui fonctionne comme un alias vers le répertoire. http://en.wikipedia.org/wiki/NTFS_junction_point
Vous pouvez voir sous la section "Effets observés" de la page wiki le problème que vous décrivez.
Essayez d'exécuter cet utilitaire pour répertorier les jonctions sous ce serveur:
http://technet.microsoft.com/en-us/sysinternals/bb896768
Il devrait également vous permettre de supprimer le point de jonction.
la source
J'ai eu un problème similaire quand eclipse a créé une arborescence de dossiers massivement profonde que je ne pouvais pas supprimer. Cependant, comme il était possible de déplacer et de renommer des dossiers, j'ai écrit un fichier batch pour qu'il fonctionne dans l'arborescence en supprimant les dossiers un par un et cela a fonctionné! Pour une arborescence de dossiers apparemment infiniment profonde de FOLDERNAME dans le répertoire C, c'est-à-dire
Fichier batch:
Cela fonctionne car TEMPFOLDERNAME est maintenant un arbre de longueur finie (un seul dossier sans rien) et l'arborescence massive de FOLDERNAME a un dossier de moins à chaque fois que la boucle est exécutée, atteignant finalement le bas en supprimant un dossier en haut.
la source
J'ai rencontré le même problème avec un désordre de dossier de plus de 5000 répertoires que certaines applications Java et j'ai écrit ceci:
https://gitlab.imanolbarba.net/imanol/DiREKT
Il a supprimé le tout après un certain temps, mais il a réussi à faire le travail, j'espère que cela aide les gens qui (comme moi), rencontrent le même problème frustrant
la source
Résolu mes répertoires de boucle sans fin avec ce script:
la source
J'ai eu le même problème. Le dossier que je voulais supprimer contenait une arborescence sans fin de liens vers le même nom et chaque tentative de suppression faisait que Windows lançait une erreur "Fichier trop long ...". Il a échoué quelle que soit la commande que j'ai essayée, y compris toutes les méthodes ci-dessus, j'ai donc essayé la commande "rm" de Cygwin dans une fenêtre cmd juste au-dessus du dossier en question. J'ai entré "rm -r -f [dossier]" et le dossier a été supprimé sans se plaindre.
Vous pouvez télécharger Cygwin gratuitement sur https://cygwin.com/install.html . Il s'agit essentiellement d'un shell UNIX pour Windows qui contient toutes les commandes courantes (par exemple, ls, rm, du et cat), mais possède également une tonne de packages qui, si tous étaient téléchargés, prendraient environ 1 Go d'espace. Je crois que le package de téléchargement par défaut comprend les commandes UNIX. Sinon, ils sont dans le bundle "utils" si la mémoire est bonne.
REMARQUE: vous n'avez pas besoin d'exécuter les commandes Cygwin dans sa fenêtre shell bash native. Ils peuvent être exécutés dans une fenêtre cmd en ajoutant le chemin du répertoire "bin" de cygwin à la variable d'environnement PATH de votre système. Dans mon cas, j'ai ajouté "C: \ cygwin64 \ bin".
J'espère que ça aide.
la source
J'ai le même problème ici.
Dans d'autres articles, il a été suggéré de mettre en miroir un dossier vide pour cibler le dossier via le partage réseau avec MS RoboCopy.
Au bon moment, je lance ceci, avec "> nul" pour accélérer (ça le fait, vraiment):
"C: \ TEMP" est un dossier vide et "W: \ TMP" est le dossier affecté :
robocopy / mir c: \ temp \ 127.0.0.1 \ w $ \ tmp> nul
la source
Moi aussi, je l'avais, sur un système Windows 10 autonome. C: \ Utilisateur \ Nom \ Répéter \ Répéter \ Répéter \ Répéter \ Répéter \ Répéter \ Répéter apparemment à l'infini.
Selon l'OP, je pouvais naviguer en utilisant Windows ou l'invite de commande vers le 50e et pas plus. Je n'ai pas pu le supprimer, ni cliquer dessus, etc. exactement comme décrit.
C est ma langue donc j'ai finalement écrit un programme avec une boucle d'appels système, qui se répètent jusqu'à ce qu'ils échouent. Selon le code DOS de JohnO, j'ai créé un répertoire appelé tmp et déplacé Repeat \ Repeat dans celui-ci, supprimé le dossier Repeat maintenant vide et replacé tmp \ Repeat dans le dossier actuel. Encore et encore!
ChkSystem exécute simplement un appel system () et vérifie la valeur de retour, s'arrêtant en cas d'échec.
Surtout, il a échoué plusieurs fois. Je pensais que mon programme ne fonctionnait peut-être pas ou qu'il était infiniment long après tout. Cependant, j'ai déjà eu cela avec des appels système, avec des choses qui ne se synchronisent pas, alors j'ai simplement exécuté à nouveau le programme et il a continué là où il s'était arrêté, alors ne pensez pas que votre programme ne fonctionne pas. Au total, après l'avoir exécuté environ 20 fois, il les a tous effacés. Au total, il était à l'origine d'environ 1280 dossiers. Aucune idée de ce qui l'a causé. Fou.
la source
Avec des répertoires en boucle à 3 niveaux:
la source
Je l'ai corrigé en exécutant chkdsk / f via la console d'administration, redémarré puis utilisé la suppression de l'explorateur de fichiers. Bien que Windows se soit plaint du long fichier / dossier, il s'est débarrassé du dossier récursif problématique une fois que j'ai confirmé la suppression.
Je ne sais pas s'il y a d'autres problèmes que j'ai pu créer en utilisant l'ancienne option chkdsk dans mon système de fichiers Windows 7 Pro.
la source
Pour moi, cette variation de la méthode Windows RoboCopy a fonctionné:
Oui, cela prend du temps mais a fait le travail.
la source
Exécutez simplement MS ROBOCOPY comme suit:
. . . . . . . . . . . . . . .
ROBOCOPIE "C: \ anyplace \ BADFOLDER" "C: \ where \ BADFOLDER" / MIR
Où:
C: \ anyplace \ BADFOLDER .. est le "dossier vide" que vous avez créé, et
C: \ partout \ BADFOLDER .. est le dossier où se trouve "l'arborescence de répertoires infiniment récurrents".
. . . . . . . . . . . . . . .
Après l'exécution de ROBOCOPY .. Vous avez maintenant deux BADFOLDERS "vides".
Pour nettoyer, supprimez les deux
C: \ anyplace \ BADFOLDER et C: \ where \ BADFOLDER
la source