web-dev-qa-db-fra.com

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

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: enter image description here

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.

62
Seiyria

J'ai commencé à taper ce problème en essayant une multitude de commandes, notamment del /F et rmdir /S (ainsi que maintenir Shift en cours de suppression pour tenter de contourner la corbeille). Je pense que rmdir /S a en fait supprimé tous les fichiers, ce qui m'a permis de supprimer les dossiers qui étaient des noeuds feuilles et de remonter dans l'arbre quelques noeuds à la fois. Finalement, je les ai tous nettoyés, mais c'était ridicule.

4
Seiyria

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-le comme dans l'invite de commande:

    robocopy/MIR c:\vide c:\myannoyingfolder

75
Flo

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. Tout sélectionner (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
29
gd73

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

4
Joshua Fox

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 commande Delete au menu contextuel de Windows.

 enter image description here

Le fichier delete.reg ajoute des entrées de registre pour associer des dossiers au fichier de commandes robodelete.bat.

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 d'accès des deux fichiers selon vos préférences.

WARNING: 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!

4
toddmo

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

3
Clint

Une bonne façon est d’avoir Linux amorçable sur la clé USB et de supprimer des fichiers sans problèmes de live CD os.

0
Dariusz Filipiak

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

Sinon, vous devez utiliser votre nom dans l'arborescence de répertoires: renommez le dossier de niveau le plus bas en un nom plus court (par exemple, "a"), puis le nom de dossier suivant, 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
Eugen Rieck
  • Ouvrir la commande administrative Invite
  • 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.

0
Bradley Forney