Forcer la suppression de fichiers avec un nom plutôt grand


62

J'utilise régulièrement Node.js pour gérer les dépendances des programmes que j'écris, ce n'est pas grave. Aujourd'hui, j'ai fini avec une structure de dossier comme celle-ci:entrez la description de l'image ici

Essayer de supprimer n'importe quel fichier a été rencontré avec cette erreur:

Le ou les noms de fichier source sont plus grands que ceux pris en charge par le système de fichiers. Essayez de vous déplacer vers un emplacement dont le nom de chemin est plus court ou essayez de renommer un nom plus court avant de tenter cette opération.

C'était déjà dans C: \, donc ça n'allait pas être beaucoup plus court.



avez-vous une idée de la façon dont votre structure de dossiers a obtenu cette taille? Je suis tombé dans la même situation lors de l'installation de Grunt.
eran otzer

1
@eranotzer en utilisant npm.
Seiyria

je ne pense pas que les dépendances de votre packages.json ont été écrites incorrectement?
eran otzer

@eranotzer Oui. En raison du fonctionnement de npm @ 2, chaque dépendance imbriquait ses dépendances à l'intérieur. Cela signifiait que les chaînes de dépendance pouvaient être arbitrairement longues. npm @ 3 cherche à régler ce problème.
Seiyria

Réponses:


75

Utilisez l'outil Microsoft robocopy.exe.

  1. Créez un nouveau dossier vide, par exemple c:\empty
  2. Copiez ensuite ce dossier vide dans le dossier contenant les noms de fichiers longs que vous essayez de supprimer, par exemple c:\myannoyingfolder. Faites ceci comme dans l'invite de commande:

    robocopy / MIR c: \ vide c: \ myannoyingfolder


Comme cela fait assez souvent partie de mon flux de travail, j'ai compris comment l'intégrer au shell Windows. Voir ma réponse ci-dessous. :)
toddmo

Remarque: cette commande peut prendre quelques secondes, voire quelques minutes. Alors, ne vous inquiétez pas et laissez-le faire la magie :-)
Adil Malik

Merci, a travaillé pour moi. Je devais m'assurer de tuer également tout processus (IIS) qui conservait toujours l'un des fichiers.
Slick Shinobi

Chaque fois que j'essaie d'ouvrir robocopy.exe, une fenêtre clignote pendant une seconde, puis rien ne se passe. S'il vous plaît aider
Maulik Modi

29

d'accord, supposons que vous vouliez supprimer un arbre D:\very\long\path, vous n'avez pas nécessairement besoin d'utiliser un outil tel que Robocopy.

  1. Accédez au répertoire racine du lecteur contenant le répertoire que vous ne pouvez pas supprimer.
  2. Créez un répertoire avec un nom de lettre unique, par exemple D:\a
  3. Naviguez jusqu'à l'intérieur du répertoire que vous souhaitez supprimer, dans ce cas D:\very\long\path
  4. Sélectionner tout ( Ctrl+ A) et Couper ( Ctrl- X)
  5. Accédez au dossier que vous venez de créer
  6. Coller ( Ctrl- V)
  7. Maintenant, allez dans le répertoire racine et supprimez le dossier temporaire, dans ce cas D:\a
  8. Revenez ensuite et supprimez le répertoire d'origine

2
Cela n'a pas fonctionné pour moi du premier coup. Cependant, après avoir répété cette procédure, quelques autres niveaux de dossiers ont été supprimés.
Abaldwin99

1
Excellente solution, a parfaitement fonctionné. Simple et efficace, merci!
Caner Öncü

GÉNIAL!! fonctionne comme un charme !!! pas d'autres outils nécessaires. Merci!
Prasanth KC

Cela fonctionne très bien, et j'y ajouterais un point. Si la sélection de fichiers dans le chemin ne fonctionne pas, vous pouvez sélectionner un dossier quelque part au milieu du long chemin et déplacer ce dossier dans un dossier temporaire, puis le supprimer. les deux de la même manière.
Narayana Nagireddi

4

J'ai commencé à taper ce problème en essayant une multitude de commandes, notamment del /Fet rmdir /S(tout en maintenant la touche shift en cours de suppression pour essayer de contourner la corbeille). Je pense qu'en rmdir /Sréalité, tous les fichiers ont été supprimés, ce qui m'a permis de supprimer les dossiers qui étaient des noeuds feuilles et de remonter dans l'arborescence quelques noeuds à la fois. Finalement, je les ai tous nettoyés, mais c'était ridicule.


4

Vous pouvez intégrer cette fonctionnalité dans le shell Windows. Mon amélioration de la réponse de Flo était trop longue pour un commentaire.

J'ai ajouté une Deletecommande au menu contextuel de Windows.

entrez la description de l'image ici

Le delete.regfichier ajoute des entrées de registre pour associer des dossiers au robodelete.batfichier de commandes.

delete.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Delete]

[HKEY_CLASSES_ROOT\Directory\shell\Delete\command]
"Extended"=""
@="\"D:\\Documents\\robodelete.bat\" \"%1\""

robodelete.bat

mkdir c:\empty
robocopy /MIR c:\empty %1
rmdir %1
rmdir c:\empty

Remarque : Vous devrez peut-être modifier les chemins dans les deux fichiers selon vos préférences.

AVERTISSEMENT : Il n'y a aucun moyen d'annuler cette commande. Il n'utilise pas la corbeille et ne demande pas à Y / N de confirmer avant de détruire le dossier pour de bon!


Merci pour l'avertissement. J'ai également besoin de cela dans mon flux de travail, mais j'aimerais éviter d'avoir un bouton nucléaire dans mon menu contextuel qui manque d'une confirmation O / N. Si j'ai le temps, je vais essayer de faire cet ajustement et suggérer une modification.
Abaldwin99

1
@ abaldwin99, comme peut-être stackoverflow.com/a/1807318/1045881
toddmo

4

L'outil de ligne de commande à code source ouvert SuperDelete ( GitHub ) a fonctionné pour moi après l'échec d'autres options (Windows 10).


3

La meilleure façon de faire est d'utiliser robocopy, je l'ai documenté sur mon blog personnel pour que vous puissiez le suivre:

http://clintboessen.blogspot.com.au/2014/05/how-to-delete-files-which-exceed-255.html


4
Bien que ce lien puisse répondre à la question, il est préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. Les réponses en lien uniquement peuvent devenir non valides si la page liée est modifiée ou disparaît.
Andrea

0

Dans de nombreux cas, un CD dans le répertoire à partir d'une invite de commande et l'utilisation de DEL fonctionneront.

Si ce n'est pas le cas, vous devez utiliser votre nom dans l'arborescence: renommez le dossier de niveau le plus bas en un nom plus court (par exemple, "a"), puis le nom du dossier immédiatement supérieur, et ainsi de suite, jusqu'à ce que le chemin d'accès total soit suffisamment court. En travaillant de bas en haut, vous manipulez toujours des noms qui ont un chemin complet plus court que les fichiers finaux.


0
  • Ouvrir l'invite de commande administrative
  • net use z: c:\path
  • del z:\*.*

Tweak en conséquence. Z: est juste une lettre de lecteur arbitraire pour mapper le chemin incriminé. Cette dernière commande de suppression effacera le répertoire WHOLE que vous avez mappé - soyez donc plus spécifique au besoin.


2
Ceci est très dangereux pour les utilisateurs non-power! Il est possible d’effacer un lecteur si cela est mal fait.
Rudi Strydom

D'accord à 100%. Certainement procéder avec prudence sur celui-ci.
Bradley Forney

0

Une bonne façon est d'avoir Linux bootable sur pendrive fichiers et supprimer sans problèmes de live CD os.


-1

J'ai également eu le même problème, et je l'ai trouvé moi-même, il suffit de renommer le dossier parent le moins possible. Ex. Si notre dossier en " D " Lecteur comme D: // Dossier / Undelete_Folder . Une seule chose à faire est de renommer le nom du dossier parent aussi petit que, vous pouvez le renommer " a ". votre emplacement sera alors D: // a / Undelete_folde r. puis supprimez le dossier parent.


Non seulement cela ne fonctionne pas nécessairement (s'il est toujours plus volumineux, même avec la réduction?), Mais j'ai explicitement mentionné que mon dossier se trouvait à la racine du lecteur.
Seiyria

-2

Si tout échoue

Allez dans le répertoire final dans la chaîne. Couper les fichiers Le coller dans le 4ème ou 5ème fichier de la chaîne. Ensuite, [Shift] + [Delete] devrait faire l'affaire.

J'étais sceptique quant à l'exécution de l'invite de commande élevée ci-dessus, car je supprimais un fichier de restauration de test à partir d'une sauvegarde DPM.

J'espère que cela t'aides.


Cela ne fonctionnera probablement pas car ils auront toujours ce long chemin de fichier pour l'opération de coupe.
Seiyria
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.