Windows semble limiter le nombre de noms de fichiers lorsque vous essayez de le supprimer, mais cela n'empêchera pas la création de ces fichiers.
Notre processus de génération crée un certain nombre de fichiers temporaires (dont beaucoup sont créés à partir d’un WSDL) qui s’exécutent au-delà de cette limite. Notre script ant est en quelque sorte capable de les supprimer lors d'un nettoyage, mais parfois, je dois supprimer le répertoire de la zone de travail (où sont stockés tous les fichiers temporaires) sans effectuer de nettoyage complet à partir de ant.
C’est la même erreur que cette question , mais les réponses ne fonctionnent pas vraiment pour moi car j’ai affaire à un répertoire, pas à un fichier, et je ne sais pas toujours quels fichiers ou sous-répertoires sont à l’origine du problème. Et j'essaie d'éviter tout processus manuel (autre que le déclenchement d'une seule commande) pour les supprimer.
Si j'essaie de supprimer le répertoire de l'explorateur, le message d'erreur s'affiche.
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>
Est-ce que quelqu'un connaît des outils ou des moyens simples de contourner cette erreur de suppression sans avoir à rechercher manuellement les fichiers problématiques et à les déplacer / renommer?
la source
Ubuntu
ou tout autre,Linux Bootable CD
nous pouvons démarrer notre ordinateurUbuntu
ou tout autre système d’exploitation pour temporaire. Ensuite, nous pouvons sélectionner le dossier et nous pouvons le supprimer facilement.Réponses:
Utilisez le gestionnaire de fichiers 7-Zip pour les supprimer.
Si vous rencontrez toujours des problèmes, veillez à utiliser Shift+ Deletedans le gestionnaire de fichiers 7-Zip. Sinon, Windows essaie de les déplacer vers la corbeille (ce qui échouera à nouveau).
la source
shift + Del
comme @cori dit. Si vous sélectionnez l'Delete
option dans le menu contextuel, cela échouera.shift + Del
il!Aucune des autres réponses (gratuites) ici ne fonctionnait pour moi, mais j'en ai trouvé une sur un autre site:
rimraf est un paquet Node.js , vous devrez donc installer Node.js qui inclut npm . Ensuite, vous pouvez exécuter:
Ensuite, vous pouvez exécuter à
rimraf
partir de la ligne de commande.J'ai trouvé cette solution car npm lui-même était à l'origine de ce problème en raison de la manière dont il imbrique des dépendances.
En passant,
rimraf
tire son nom de la commande UNIXrm -rf
, qui supprime de manière récursive des fichiers et des dossiers.la source
Il n'est pas nécessaire d'installer un 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é à échouer dans certains cas. Il n'est pas nécessaire d'utiliser 7zip ou tout autre outil tiers. Powershell est une overkill. Cygwin peut fonctionner, mais vous ne l'avez peut-être pas installé. Alors concentrons-nous surrobocopy
L'idée est de
robocopy
pour copier + mis à jourAprès exécution
robocopy
, le répertoire cible sera également vide.Ces instructions sont pour la ligne de commande. Il suffit d'ouvrir la recherche dans Windows, tapez
cmd
et appuyez sur Entrée.Disons que la cible de la suppression est:
Nous procédons comme suit:
Commencez par créer un répertoire vide, fi
C:\emptyfolder
.Copiez + mettez à jour du répertoire vide vers la cible, en utilisant l'option
/purge
Supprimer le répertoire vide. Vous n'en avez plus besoin.
Comme il n'y a aucun fichier ou dossier dans le répertoire source (
C:\emptyfolder
), il supprime simplement les fichiers et les dossiers du répertoire cible (C:\delete\this folder\with a very long name
) de manière récursive!Dernier truc: vous pouvez éviter d'écrire à la main
En faisant glisser le dossier depuis une fenêtre de l'Explorateur et en le déposant dans la fenêtre Terminal / cmd.
Attention, les fichiers supprimés ne vont pas dans la corbeille ! Une fois supprimés, les fichiers ne peuvent plus être récupérés.
(Tiré de "Path too long? Use Robocopy" de BVLANGEN )
PS: Je me rends compte que cette réponse était là, moins didactiquement. Comment supprimer un fichier sous Windows avec un nom de fichier trop long? [dupliquer]
Benoit a ajouté:
la source
Je crois avoir trouvé un moyen de supprimer des éléments
cmd
. A l'origine, j'ai essayé ladel
commande, mais cela n'a pas fonctionné. Puis je me suis souvenurmdir
. Faire ce qui suit:semble avoir fonctionné.
la source
L'outil que j'ai utilisé quand j'ai eu ce problème était FastCopy . J'ai sélectionné Supprimer tout dans le menu déroulant, sélectionné le répertoire que je voulais supprimer et cliqué sur Supprimer tout .
FastCopy est portable (aucune installation requise) et il existe des versions 32 bits et 64 bits disponibles.
la source
Sans installer de logiciel supplémentaire, vous pouvez utiliser la
subst
commande pour créer temporairement un alias dans un répertoire nommé long.Par exemple, si vous souhaitez supprimer un dossier,
C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deleted
vous pouvez utiliser la commandeet ensuite vous pouvez supprimer
X:\folder to be deleted
facilement dans l'Explorateur Windows ou dans l'invite de commande. Pour supprimer l'alias de lettre de lecteur temporaire, utilisez la commandela source
Cygwin
rm -rf
fonctionne bien sur les longs chemins!la source
Passez de Powershell à la commande en exécutant ci-dessous:
la source
La solution de Dentrasi est celle qui a le mieux fonctionné pour moi, mais je voulais publier les étapes spécifiques dans une réponse de niveau supérieur.
la source
Il y a deux choses qui ne sont pas déjà mentionnées dans les réponses existantes.
Préfixe long chemin
L'API Windows a une fonction spéciale qui prend en charge les noms de chemin d'accès Unicode de 32 000 caractères maximum (chaque élément pouvant contenir jusqu'à 255 caractères).
Ceci est souvent appelé à tort dénomination UNC mais ce n’est pas lié à la réalité.
Le préfixe utilisé pour indiquer à l'API d'utiliser des chemins Unicode longs est le
\\?\
suivant:Les noms UNC sont normalement utilisés pour faire référence à des chemins sur des serveurs distants dans le formulaire
\\servername\path name\file name
. Vous pouvez combiner cela avec le préfixe long path afin que:\\?\UNC\server\share
Notez que certaines applications, mal écrites mais malheureusement assez courantes, ne prennent pas en charge les chemins de fichiers UNC ni le préfixe de chemin long.
Référence: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath
Support long chemin
Cette option a été ajoutée aux versions récentes de Windows 10. Elle n’est pas, au moment de la rédaction, activée par défaut, car elle nécessite une prise en charge spécifique de l’application. Fait intéressant, PowerShell a une prise en charge intégrée, ce qui permet à cette option d’utiliser les longs chemins directement dans les scripts PowerShell.
Vous pouvez l'activer via l'éditeur de stratégie de groupe si vous possédez une version de Windows. Ou vous pouvez simplement utiliser le changement de registre suivant. Comme toujours, veuillez sauvegarder la section du registre que vous modifiez avant de faire quoi que ce soit.
regedit.exe
.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
LongPathsEnabled
.LongPathsEnabled
sur1
pour activer.Toutes les applications avec des entrées de manifeste appropriées auront désormais accès aux chemins longs standard POSIX. Cela devrait inclure les applications du Windows Store.
Référence: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
MISE À JOUR 2017-04-09
@maoizm a signalé un problème avec la clé de registre ci-dessus, j'ai donc creusé un peu plus . Il semble que vous puissiez maintenant définir la prise en charge de nom de fichier long avec une clé système:
Cela ne fonctionne toujours que pour les applications spécialement définies pour l'utiliser (nécessite une entrée dans le fichier manifest.xml de l'application).
Vous devez également noter que vous ne pouvez pas utiliser de noms de chemin relatifs avec cette méthode.
la source
{48981759-12F2-42A6-A048-028B3973495F}Machine
une partie du chemin du registre sera différente sur chaque ordinateur - cela ne sera peut-être pas évident pour tout le mondeJ'aime la solution cmd. Bien que je veuille partager une autre solution de contournement qui ne fonctionne même que dans Explorer, essayez de raccourcir les noms des dossiers parents avant la suppression: des noms plus courts raccourciront le chemin. Dites, vous avez cette arborescence du dossier:
C: \
.. Projets
.. .. Quelques projets impressionnants au printemps 2014
.. .. .. Quelques activités dans le parc de la ville un vendredi
.. .. .. .. Bla bla bla bla bla bla bla bla bla bla bla bla
.. .. .. .. .. .. Fichiers réels avec des noms longs, aussi
Dans ce cas, vous ne pouvez pas supprimer les dossiers, vous ne pouvez pas non plus supprimer ou renommer les fichiers. Si vous souhaitez supprimer l'intégralité ou une partie de la structure de dossiers, vous pouvez temporairement renommer les dossiers parents et raccourcir le chemin, puis supprimer le dossier. Les noms peuvent être juste des lettres:
C: \
.. Projets
.. .. X
.. .. .. y
.. .. .. .. z
.. .. .. .. .. .. Fichiers réels avec des noms longs, aussi
Dans mon cas, je voulais simplement supprimer tout le dossier avec de nombreux sous-dossiers et fichiers. Donc, je me fichais du nom des dossiers.
la source
La solution 7-zip fonctionne très bien. Une autre option si vous avez installé git consiste à ouvrir un shell bash et à utiliser:
rm -f
(ou
rm -rf
pour les dossiers)la source
Git Bash Here
Je suggère Total Commander (un shareware, mais continue de fonctionner après une période d’essai avec seulement un écran de démarrage minimal). C’est ainsi que je résoudrai toujours les problèmes de noms de fichiers trop longs .
la source
chkdsk
devrait le résoudre.Vous pouvez également les supprimer en utilisant leur nom abrégé équivalent.
dir /x
va vous montrer.la source
J'ai créé un programme Java simple qui utilise robocopy pour supprimer les fichiers. Le pot est un runnable. Pour une sortie supplémentaire, exécutez-le à partir de la ligne de commande.
https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing
la source
J'ai essayé toutes les autres réponses, mais elles n'ont pas fonctionné (du moins pour moi).
Je suis tombé sur delinfile et j'ai travaillé assez bien et assez rapidement!
Son essai est limité à 3 actions / 15 jours, mais il est utilisable si vous souhaitez uniquement supprimer quelques dossiers / fichiers:
la source
Bigger Directories est également conçu pour cette tâche.
Plus d'infos sur CodeProject .
la source
J'ai fait face à ce problème dans Windows 10 et trouvé cette solution facile.
la source
Vous avez la réponse parfaite ici (pour les fichiers). Fonctionne sous Windows 10.
Voir aussi: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath
Pas une seule réponse en 4 questions ne suffisait à mes besoins. Vous êtes les bienvenus dans le monde.
la source
J'ai finalement découvert comment faire cela via Powershell. Voici les instructions que j'ai suivies pour que cela fonctionne avec Windows 7:
Créez un nouveau dossier appelé NTFSSecurity dans le dossier C: \ Utilisateurs \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , où XXXX est votre nom d'utilisateur Windows. Exemple: si mon nom d'utilisateur était " aspnyc ", le nouveau dossier serait C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity .
Téléchargez le package du module PowerShell Security du système de fichiers - il devrait être disponible sous forme de fichier ZIP simple.
la source
J'ai enfin découvert comment faire cela avec Powershell sous Windows 10, où les noms de fichiers individuels étaient trop longs. Voici les étapes que j'ai suivies pour que cela fonctionne avec Windows 10:
la source
Si Bash sous Ubuntu sous Windows est installé, vous pouvez accéder au répertoire parent dans une invite de commande normale, puis taper:
Qui lance bash, supprime récursivement le répertoire de linux où il n'y a aucune restriction de nom de fichier, puis revient à votre invite de commande habituelle.
la source
Accédez au répertoire dans WinRAR, sélectionnez le fichier, appuyez sur F2, renommez le fichier en un nom plus court. Ensuite, vous pouvez supprimer le fichier comme d'habitude.
Source: https://www.youtube.com/watch?v=qQTyTprFAOg
la source