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

1voto

Laurie Stearn Points 370

Répertoires plus importants est également conçu pour cette tâche. enter image description here

  • Télécharger
  • Utilise un appel récursif avec RemoveDirectoryW pour supprimer les répertoires existants.
  • Utilise son propre dépôt de fichiers pour les répertoires nouvellement créés
  • Les fichiers peuvent être déplacés des répertoires avant la suppression des répertoires qui les contiennent.
  • Rapide, bien que la navigation vers le haut du répertoire soit un clic par répertoire imbriqué.
  • Windows XP(SP3) et supérieur
  • Code non signé et non géré sans installateur, donc avertissement possible de Smartscreen quand il est exécuté à partir d'un dossier libre, par exemple le bureau.

Plus d'informations sur CodeProject .

0 votes

Veuillez lire Comment recommander un logiciel pour obtenir des conseils sur la manière de recommander des logiciels. Vous devez fournir au moins un lien, des informations supplémentaires sur le logiciel lui-même et la manière dont il peut être utilisé pour résoudre le problème posé par la question.

1voto

Nayana Adassuriya Points 253

J'ai rencontré ce problème dans Windows 10 et j'ai trouvé cette solution facile.

  1. Allez un peu plus loin dans votre arborescence de dossiers.
  2. Faites glisser et déposez un dossier du milieu de l'arbre vers le début de l'arbre en utilisant la barre d'adresse.
  3. Comme dans mon image, faites glisser et déposez la boîte rouge sur la boîte verte. (dans ce cas, le chemin est plus court, mais pour les longs chemins, cela fonctionne également).
  4. Votre chemin devient alors plus court et vous pouvez l'effacer normalement en utilisant la touche de suppression.

enter image description here

1voto

Si vous avez installé Bash sur Ubuntu sur Windows, vous pouvez accéder au répertoire parent dans une invite de commande ordinaire, puis taper :

bash -c "rm -rf dirname_here"

Ce qui lance bash, supprime récursivement le répertoire de linux où il n'y a pas de restriction de nom de fichier, puis retourne à votre invite de commande habituelle.

1voto

Andrew Points 415

J'ai trouvé la réponse parfaite ici (pour les dossiers). Fonctionne sous Windows 10.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Voir aussi : https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

Pas une seule réponse alternative en 4 questions n'était suffisante pour mes besoins. Vous êtes le bienvenu dans le monde.

1voto

root Points 852

Naviguez jusqu'au répertoire dans WinRAR, sélectionnez le fichier, appuyez sur F2 pour renommer le fichier avec un nom plus court. Ensuite, vous pouvez supprimer le fichier comme d'habitude.

Source : https://www.youtube.com/watch?v=qQTyTprFAOg

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