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:
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.
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.
Utilisez l'outil Microsoft robocopy.exe
.
c:\empty
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
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.
D:\a
D:\very\long\path
D:\a
L'outil de ligne de commande open-source SuperDelete ( GitHub ) a fonctionné pour moi après l'échec d'autres options (Windows 10).
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.
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!
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
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.
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.
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.