422 votes

Comment supprimer des répertoires dont les chemins/noms sont trop longs pour une suppression normale ?

Windows semble avoir une limite de longueur sur les noms de fichiers lorsqu'il essaie de les supprimer, bien que cela n'empêche pas ces fichiers d'être créés.

Notre processus de construction crée un certain nombre de fichiers temporaires (beaucoup sont construits à partir d'une WSDL) qui ne respectent pas cette limite. Notre ant script est en quelque sorte capable de les supprimer lors d'un nettoyage, mais parfois j'ai besoin de supprimer le répertoire workarea (où tous les fichiers temporaires vont) sans vraiment faire un nettoyage complet à partir de ant.

Ce sont les mêmes erreurs cette question Je ne sais pas toujours quels fichiers ou sous-répertoires spécifiques sont à l'origine du problème. Et j'essaie d'éviter tout processus manuel (autre que le déclenchement d'une commande unique) pour les supprimer réellement.

Si j'essaie de supprimer le répertoire à partir de l'Explorer, j'obtiens l'erreur suivante

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

Essayer Remove-Item dans powershell donne l'erreur suivante :

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Quelqu'un connaît-il un outil ou un moyen facile de contourner cette erreur de suppression sans avoir à trouver manuellement les fichiers problématiques et à les déplacer/renommer ?

2 votes

J'ai trouvé la solution juste avant de poster cette question, mais comme d'autres peuvent rencontrer ce problème, j'ai décidé de la poster pour qu'ils puissent trouver la solution que j'ai trouvée.

0 votes

Oh, je sais, mais généralement, lorsque je fais ce genre de choses, je laisse la question "sans réponse" pendant un certain temps pour voir si quelqu'un d'autre a une meilleure solution.

0 votes

Par Far la solution la plus simple : youtube.com/watch?v=qQTyTprFAOg

481voto

Dentrasi Points 10825

Utilisez le 7-Zip Gestionnaire de fichiers pour les supprimer.

Si vous rencontrez toujours des difficultés, assurez-vous d'utiliser Shift + Delete dans le gestionnaire de fichiers de 7-Zip. Sinon, Windows essaie de les déplacer vers la corbeille (ce qui échouera à nouveau).

0 votes

J'ai essayé plusieurs remplacements de l'explorateur, mais ils semblaient tous transmettre les demandes de suppression au mécanisme de l'explorateur par défaut, alors j'ai abandonné. Je n'ai jamais pensé à utiliser 7zip pour remplacer l'explorateur. Je vais devoir l'essayer.

8 votes

Merci - cela a permis de se débarrasser d'une arborescence de répertoires qui était un peu récursive et trop profonde pour que del/rmdir/rm/explorer puisse la supprimer.

72 votes

Fonctionnait très bien en utilisant shift+Del - 7zip ne pouvait pas envoyer les fichiers longs à la corbeille....

318voto

voidstate Points 4988

Aucune des autres réponses (gratuites) proposées ici n'a fonctionné pour moi, mais j'en ai trouvé une sur un autre site :

rimraf <dir>

rimraf est un Node.js vous devrez donc installer Node.js qui inclut npm . Alors vous pouvez courir :

npm install -g rimraf

Ensuite, vous pouvez exécuter rimraf à partir de la ligne de commande.

J'ai trouvé cette solution parce que npm lui-même causait ce problème en raison de la façon dont il imbrique les dépendances.

Au fait, rimraf tire son nom de la commande UNIX rm -rf qui supprime récursivement les fichiers et les dossiers.

8 votes

J'ai essayé de nombreuses façons. Celui-ci fonctionne parfaitement !

2 votes

La meilleure réponse de toutes :) oui, c'est facile, beasy.

0 votes

Cela a marché pour moi aussi....

199voto

BarryBostwick Points 111

Il y a pas besoin d'installer de programme pour résoudre ce problème.

Ce problème est facilement résolu en utilisant robocopy préinstallé depuis Windows Vista, lancé en 2006.

Par exemple, rmdir /S /Q <dir> a été signalé comme échouant dans certains cas. Il n'est pas nécessaire d'utiliser 7zip ou un autre outil tiers. Powershell est une surcharge. Cygwin peut fonctionner, mais vous ne l'avez peut-être pas installé. Alors, concentrons-nous sur robocopy

L'idée est de

  1. utiliser robocopy à copier+mise à jour
  2. d'un nouveau dossier vide
  3. au dossier que vous voulez supprimer, la cible.

Après avoir exécuté robocopy le répertoire cible sera également vide.

Ces instructions concernent la ligne de commande. Il suffit d'ouvrir la recherche dans Windows, de taper cmd et appuyez sur Entrée.

Disons que le cible pour la suppression est :

C:\delete\this folder\with a very long name

Nous procédons comme suit :

  1. Créez d'abord un répertoire vide, f.i. C:\emptyfolder .

    mkdir C:\emptyfolder
  2. Copie+mise à jour du répertoire vide vers la cible, en utilisant l'option /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
  3. Supprimez le répertoire vide. Vous n'en avez plus besoin.

    rmdir c:\emptyfolder

Comme il n'y a pas de fichiers ou de dossiers dans le répertoire source ( C:\emptyfolder ), il supprime simplement les fichiers et dossiers sous le répertoire cible ( C:\delete\this folder\with a very long name ) récursivement !

  • Dernière astuce : vous pouvez éviter d'écrire à la main

    C:\delete\this folder\with a very long name

    En faisant glisser le dossier depuis une fenêtre de l'Explorateur et en le déposant dans la fenêtre du Terminal/cmd.

Soyez prudent. : Les fichiers supprimés ne va pas à la poubelle dossier ! Une fois supprimés, les fichiers ne peuvent pas être récupérés.

(Tiré de "Le chemin est trop long ? Utilisez Robocopy" par BVLANGEN )

PS : Je réalise que cette réponse se trouvait ici, de manière moins didactique. Comment supprimer dans Windows un fichier dont le nom est trop long ? [duplicate]

Benoit ajouté :

Vous devrez peut-être effectuer cette opération plusieurs fois pour vous débarrasser de tous les fichiers.

18 votes

Merci, mon bon monsieur ! Cela devrait être la réponse acceptée comme toutes les autres soit n'a pas fonctionné ou a exigé un Outil tiers . :)

0 votes

Cela fonctionne parfaitement... pas besoin d'installer quoi que ce soit (pour autant que je sache) et c'est rapide. Cela devrait être la réponse acceptée !

1 votes

Cela permet de conserver une partie (ou l'ensemble) de l'arborescence des répertoires sous "c" : \deletefolder "(répertoire cible). Quoi qu'il en soit, tout a été supprimé en un clin d'oeil pour moi (je suppose que les fichiers étaient petits) et j'ai juste dû manuellement <Del> "c : \deletefolder "les répertoires enfants ont été supprimés sans problème. Ça a marché comme sur des roulettes. +1, devrait être la réponse acceptée ! :)

31voto

Luca Rocchi Points 2665

Sans installer de logiciel supplémentaire, vous pouvez utiliser subst pour créer temporairement un alias vers un répertoire au nom long.

Par exemple, si vous voulez supprimer le dossier C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deleted vous pouvez utiliser la commande

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

et ensuite vous pouvez supprimer X:\folder to be deleted dans l'Explorateur Windows ou dans l'invite de commande facilement. Pour supprimer l'alias temporaire de la lettre de lecteur, utilisez la commande suivante

subst x: /d

0 votes

J'ai essayé toutes les autres réponses (y compris les réponses à d'autres questions similaires) et celle-ci est la seule qui a fini par fonctionner pour moi. Et c'était de loin la plus rapide.

2 votes

C'est de loin la meilleure réponse : simple, fonctions intégrées, pas de manipulation du registre. Ce devrait être la réponse acceptée.

0 votes

C'est la méthode la plus propre et la plus simple, merci Kenneth.

30voto

Swaroop C H Points 7518

L'outil que j'ai utilisé lorsque j'ai eu ce problème était FastCopy . J'ai sélectionné Supprimer tout dans la liste déroulante, j'ai sélectionné le répertoire que je voulais supprimer, et j'ai cliqué sur Supprimer tout .

FastCopy delete dialog screenshot

FastCopy est portable (aucune installation requise), et il existe des versions 32 et 64 bits.

3 votes

Si vous cherchez un outil en ligne de commande, vous pouvez utiliser un petit outil que j'ai publié sur GitHub ( github.com/epsitec/Tools-RecursiveDelete ).

0 votes

J'avais un ensemble généré récursivement de fichiers/dossiers imbriqués. C'était la seule solution qui fonctionnait

2 votes

Cela a fonctionné pour moi alors que la ligne de commande n'a pas fonctionné, que la tentative de 7zip n'a pas fonctionné et que même le support de Microsoft n'a pas compris !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X