Eclipse a créé un dossier temporaire dans l’un des répertoires assez profonds, par exemple
dir1\dir1\dir1\dir1\...
Je ne parviens pas à supprimer ce dossier sous Windows via Explorer, les commandes del
ou rmdir
, ni la commande 'rm' de Cygwin. Comment dois-je supprimer ce très long dossier?
Il n'arrête pas de dire "Nom de fichier trop long ..."
Réponses:
Si vous êtes comme moi et que vous n'aimez pas installer un logiciel supplémentaire pour résoudre un problème de ce type, j'irais de pair avec la suggestion de XQYZ et l'utiliserai
robocopy
pour résoudre le problème. (Dans mon cas, le problème a été créé par robocopy en premier lieu, en copiant un répertoire contenant des points de jonction récursifs sans fournir / XJ à robocopy).Pour supprimer l’arborescence commençant par c: \ sousdir \ more \ offending_dir :
Le processus complet, étape par étape, est aussi simple que cela:
cd c:\subdir\more
à cd dans son répertoire parent.mkdir empty
créer un répertoire vide.robocopy empty offending_dir /mir
mettre en miroir le répertoire vide dans le répertoire incriminé.rmdir offending_dir
se débarrasser du répertoire incriminé maintenant vide etrmdir empty
se débarrasser de votre répertoire vide intermédiaire.la source
robocopy
points de jonction; merci de me montrer comment l'utiliser pour nettoyer le désordre!C'est en fait assez simple à corriger. Dites que la structure de répertoire est en tant que telle:
Pour résoudre ce problème, il suffit de renommer chaque dossier en un nom de dossier d'un caractère jusqu'à ce qu'il ne soit plus trop long à supprimer:
C:\Dir1
enC:\D
C:\D\
C:\D\Dir1
enC:\D\D
C:\D\D\
Voici un fichier de commandes pour automatiser le processus (cette version simple est préférable pour des répertoires simples comme celui décrit dans la question, en particulier pour les répertoires jetables). Passez le dossier le plus haut possible (par exemple
C:\Dir1
pourC:\Dir1\Dir1\Dir1…
ouC:\Users\Bob\Desktop\New Folder
pourC:\Users\Bob\Desktop\New Folder\abcdefghi…
)Explication technique
Les autres solutions proposées sont à rebours; vous ne pouvez pas le réparer en allant du répertoire le plus profond vers l'extérieur, vous devez aller dans l'autre sens.
Lorsque vous essayez d'accéder à un répertoire, vous le faites en utilisant son chemin absolu, explicitement ou non, qui inclut tout ce qui le précède. Par conséquent, pour une structure de répertoire semblable à
C:\Dir1\Dir1\Dir1\Dir1
, la longueur du chemin d'accès au plus intérieurDir1
est de 22. Cependant, la longueur du chemin d'accès au plus externeDir1
n'est que de 7 et est donc toujours accessible quel que soit son contenu (dans le contexte du chemin d'un répertoire donné). , le système de fichiers n’a aucune connaissance de ce qu’il contient ni de l’effet qu’il a sur la longueur totale du chemin de ses répertoires enfants; seulement ses répertoires ancêtres (vous ne pouvez pas renommer un répertoire si la longueur totale du chemin est trop longue).Par conséquent, lorsque vous rencontrez un chemin trop long, vous devez aller au plus haut niveau possible, le renommer en un nom à un caractère et le répéter pour chaque niveau. Chaque fois que vous le faites, la longueur totale du chemin est raccourcie de la différence entre l'ancien nom et le nouveau nom.
Le contraire est également vrai. Vous ne pouvez pas créer de chemin d'accès supérieur à la longueur maximale prise en charge (sous DOS et Windows
MAX_PATH = 260
). Cependant, vous pouvez renommer les répertoires, en commençant par le plus externe, en un nom plus long. Le résultat est que les dossiers plus profonds dont le chemin d'accès absolu est> 260 seront inaccessibles. (Cela ne les rend pas "cachés" ou sécurisés, car ils sont assez simples à consulter, aussi n'utilisez pas cette méthode pour cacher des fichiers.)Note latérale intéressante
Si vous créez des dossiers dans l'Explorateur Windows 7, il peut sembler que l'Explorateur vous autorise à créer des sous-répertoires tels que la longueur totale soit supérieure à
MAX_PATH
, et en réalité, il l'est, mais il trompe en utilisant "noms de fichiers DOS 8.3". Vous pouvez le voir en créant un arbre tel que:Il est long de 696 caractères, ce qui est bien sûr beaucoup plus long que 260. En outre, si vous accédez au sous-répertoire le plus à l'intérieur de l'explorateur, il s'affiche comme prévu dans la barre d'adresse lorsqu'il n'est pas activé, mais lorsque vous cliquez sur l'adresse. barre, il modifie le chemin
C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, qui ne compte que 102 caractères.Sous XP, cela n’est pas le cas, il refuse fermement de créer un chemin plus long que celui pris en charge.
Ce qui serait vraiment intéressant, c’est de découvrir comment l’Explorateur Windows 7 gère les «chemins trop longs» lorsque l’
NtfsDisable8dot3NameCreation
option est définie.la source
\\?` doesn't work with
rmdir`.\\?\C:\dir\dir\dir\dir
littéralement dérivation MAX_PATH; il n'y a pas de "variables" impliquées. (Mais comme je l'ai dit, cela ne fonctionne pas avecrmdir
ou d'autres élémentscmd.exe
intégrés pour une raison quelconque.)md C:\01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Cela ne fonctionnera pas car le système de fichiers dispose d'informations suffisantes pour déterminer que la longueur totale du chemin d'accès serait de 263 caractères.Vous pouvez raccourcir le chemin en utilisant
subst
pour créer un lecteur virtuel:Changer dans le lecteur virtuel:
Maintenant, vous pouvez supprimer les fichiers:
Retirez le lecteur virtuel:
Supprimer le répertoire:
la source
C:\TEMP\dir1\dir1\dir1
, cela en raccourcira une partie, ce qui vous permettra d'entrer. Cela ressemble à votre suggestion de renommer, mais avec un mappage à la place. ;):-)
J'ai écrit une petite application C # pour m'aider à supprimer une structure très profonde similaire générée par une utilisation négligente de Robocopy et une sauvegarde de Homeserver; Par défaut, Robocopy traite les points communs comme des dossiers normaux ... :-( Vous pourriez vous retrouver avec un gros gâchis sans vous en rendre compte.
Cet outil est disponible sur CodePlex avec des fichiers source, à l’usage de tous.
la source
Il y a quelque temps, j'ai créé un petit exécutable utilitaire autonome appelé DeleteFiles que vous pouvez utiliser pour effectuer cette tâche facilement.
En utilisant cet utilitaire autonome, vous pouvez simplement faire:
pour supprimer toute la structure du dossier. -r récise la hiérarchie des dossiers à partir du répertoire de départ, -f supprime tous les dossiers vides (qui seront tous si vous utilisez . en tant que spécification de fichier). DeleteFiles prend en charge les chemins plus longs que la limite Windows MAX_PATH, de sorte que cela fonctionnera parfaitement sur les dossiers imbriqués.
DeleteFiles est gratuit et à code source ouvert. Vous pouvez récupérer le code binaire ou source de GitHub ou installer directement à l’aide de Chocolatey.
la source
> NUL
à la fin peut accélérer le processus.Simple et facile maintenant
Je faisais face au même problème depuis si longtemps avec node_modules qui a des dossiers très imbriqués. alors finalement fait un script pour réparer ce qui peut supprimer des dossiers en raccourcissant les chemins.
https://github.com/dev-mraj/fdel
la source
Lorsque je travaillais avec Sikuli, je me suis retrouvé avec une boucle de récursivité Calculator.sikuli dans le programme qui générait une quantité indénombrable de répertoires "calculator.sikuli.calculator.sikuli". Je pourrais déplacer l’arbre, mais le chemin est trop long pour être supprimé.
Après avoir essayé plusieurs solutions avec boucle popd, Scandisk et obtenir (sensiblement) nulle part ...
J'ai écrit ce script pour "aller en profondeur" dans les répertoires récursifs (dans un répertoire appelé "a"), les déplacer (vers un répertoire appelé "b"), puis supprimer l'arborescence tronquée, les déplacer vers l'arrière (vers "a") , et répétez:
Remdirs.bat
Ceci est juste un appel à réexécuter le fichier de commandes.
la source
Nous avons eu un problème comme celui-ci au travail quand Eclipse a décidé de créer des ordures sur les disques durs. Nous l'avons corrigé en utilisant la fonction / MIR de robocopy pour refléter un répertoire vide dans le répertoire imbriqué.
la source
Je voudrais essayer d'ouvrir une invite de commande et en cours d'exécution:
Si cela ne fonctionne pas, je cd à mi-chemin dans l'arborescence de répertoires et essayer de supprimer un sous-ensemble des répertoires - disons les 20 répertoires les plus internes - puis de m'en sortir.
la source
;-)
S'il s'agit d'un dossier réseau, partagez simplement le répertoire parent de ce répertoire et mappez-le sur un lecteur de votre ordinateur local, puis supprimez votre dossier.
la source
Ouvrez une invite de commande.
Naviguez jusqu'au dossier / répertoire qui contient le plus grand 'dir1' (nous supposerons C: \)
Modifier (après les commentaires ajoutés) :
Autres idées:
MS offre des informations sur la façon de traiter le problème (beaucoup d'idées à essayer) ici .
Il y a aussi cet outil (jamais utilisé personnellement) - TooLongPath .
Peut-être écrire quelque chose (puisque vous avez Eclipse) qui navigue à fond puis revient en arrière un niveau de dossier à la fois, en le supprimant au fur et à mesure?
la source
Une autre solution: téléchargez Total Commander. C'est un programme très utile, pas seulement parce que c'est un long fichier sensible.
La version non enregistrée est Nagware mais entièrement fonctionnelle, elle fera le travail.
la source
Cela peut être fait directement à partir de la ligne de commande ou dans un fichier de commandes en construisant un chemin UNC vers le répertoire que vous souhaitez supprimer.
alors au lieu de
utilisation
Les chemins de style UNC comme celui-ci peuvent être beaucoup plus longs et contourner la limite de 260 caractères.
la source
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 64 bits.Lorsque j'ai ce problème, je renomme simplement certains noms de dossiers beaucoup plus courts, puis une fois que le chemin d'accès total est suffisamment court, vous supprimez OK. Aucun outil supplémentaire nécessaire.
la source
ren
commande échouera avecpath too long
.J'ai eu le même problème, sauf qu'il a été créé par une tâche de sauvegarde Cobian récursive. Il s'avère que le logiciel gratuit Cobian inclut une application Deleter qui permet de supprimer très rapidement ces dossiers imbriqués embêtants.
Il est situé sous le menu Outils.
la source
J'ai rencontré le même problème que certaines applications Java avec un désordre de dossiers de plus de 5000 répertoires et j'ai écrit un programme qui vous aidera à supprimer ce dossier. Le code source complet se trouve dans ce lien:
https://gitlab.imanolbarba.net/imanol/DiREKT
Il a tout supprimé après un moment, mais il a réussi à faire le travail. J'espère que cela aidera les gens qui (comme moi) rencontrent le même problème frustrant.
la source
Votre système de fichiers est peut-être corrompu. Exécutez chkdsk pour voir s’il répare quoi que ce soit, puis essayez de supprimer le dossier.
la source
MAX_PATH=255
). Cela peut se produire même avec un système de fichiers non corrompu.