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


380

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-Itemdans 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?


2
J'ai trouvé la solution juste avant de poster cette question, mais comme d'autres personnes pourraient en être victimes, j'ai décidé de la poster pour qu'elles puissent trouver la solution que j'ai rencontrée.
Herms

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

De loin la solution la plus simple: youtube.com/watch?v=qQTyTprFAOg
TaW

En utilisant Ubuntuou tout autre, Linux Bootable CDnous pouvons démarrer notre ordinateur Ubuntuou tout autre système d’exploitation pour temporaire. Ensuite, nous pouvons sélectionner le dossier et nous pouvons le supprimer facilement.
Kelum Priyadarshane

1
Cette ancienne question contient également des réponses intéressantes: superuser.com/questions/45697/…
AdamV

Réponses:


421

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).


5
Merci - cela s'est débarrassé d'un arbre de répertoire un peu récursif et trop profond pour que del / rmdir / explorer puisse le supprimer
Martin Beckett

63
a bien travaillé avec Maj + Suppr - 7zip n'a pas pu envoyer de fichier de chemin long dans la corbeille ....
cori

66
+1 7zip. Vous devez naviguer dans le dossier, puis utiliser shift + Delcomme @cori dit. Si vous sélectionnez l' Deleteoption dans le menu contextuel, cela échouera. shift + Delil!
Urda

8
7zip n'a pas fonctionné pour win7 64, donc linux a fonctionné.
Erik Friesen

13
Je vote ceci car avec 7zip vous pouvez supprimer aussi supprimer un dossier qui contient de longs dossiers imbriqués à l'intérieur. J'avais un problème avec un dossier node_module qui contenait des tonnes de dossiers imbriqués et je n'ai pas pu le supprimer. 7zip fixé à partir du dossier de base sans faille. +1
Gruber

310

Aucune des autres réponses (gratuites) ici ne fonctionnait pour moi, mais j'en ai trouvé une sur un autre site:

rimraf <dir>

rimraf est un paquet Node.js , vous devrez donc installer Node.js qui inclut npm . Ensuite, vous pouvez exécuter:

npm install -g rimraf

Ensuite, vous pouvez exécuter à rimrafpartir 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, rimraftire son nom de la commande UNIX rm -rf, qui supprime de manière récursive des fichiers et des dossiers.


7
Essayé de plusieurs façons. Cela fonctionne parfaitement!
Duckegg

2
La meilleure réponse de toutes :) oui, c'est facile
Al-Mothafar

2
Cela devrait être la réponse acceptée.
NINCOMPOOP

13
Votre solution fonctionne mais c’est tellement f ## k-up que je dois utiliser un module de nœud js pour supprimer les dossiers du nœud js modules ... Je ne veux plus vivre sur cette planète
Benoit P

4
Node a créé le problème en premier lieu pour moi alors ... intéressant ... qu'ils aient aussi une solution.
Eric J.

141

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

  1. utiliser robocopypour copier + mis à jour
  2. à partir d'un nouveau dossier vide
  3. dans le dossier que vous voulez supprimer, la cible.

Aprè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 cmdet appuyez sur Entrée.

Disons que la cible de la suppression est:

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

Nous procédons comme suit:

  1. Commencez par créer un répertoire vide, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Copiez + mettez à 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. Supprimer le répertoire vide. Vous n'en avez plus besoin.

    rmdir c:\emptyfolder
    

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

    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 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é:

Vous devrez peut-être suivre ce processus plusieurs fois pour vous débarrasser de tous les fichiers.


11
Merci bon monsieur !! Cela devrait être la réponse acceptée car tous les autres ne fonctionnaient pas ou nécessitaient un outil tiers . :)
MickyD

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

1
Cela conserve une partie (ou la totalité) de l’arborescence de répertoires sous "c: \ deletefolder" (répertoire cible). Quoi qu'il en soit, tout supprimé en un clin d'œil pour moi (je suppose que les fichiers étaient petits) et que je devais simplement manuellement <Suppr> "c: \ deletefolder", les répertoires enfants ont été supprimés sans problème. Travaillé comme un charme. +1, devrait être la réponse acceptée! :)
rld.

@rld, mais "deletefolder" existait-il avant? Sinon, je pense qu'il devrait être vide s'il s'agissait d'un nouveau répertoire. Sinon c'est le bordel. Je pourrais ajouter une dernière étape pour "rmdir deletefolder".
hectorpal

1
Lorsque vous utilisez des répertoires très récursifs, cette option est beaucoup plus lente que 7zip. Après avoir attendu 20 minutes, je les ai comparés et ai réalisé 7zip, même si cela ne montre pas que les progrès ont été 50 fois plus rapides.
Andy Gauge

84

Je crois avoir trouvé un moyen de supprimer des éléments cmd. A l'origine, j'ai essayé la delcommande, mais cela n'a pas fonctionné. Puis je me suis souvenu rmdir. Faire ce qui suit:

rmdir /S /Q <dir>

semble avoir fonctionné.


105
Ca n'a pas marché pour moi. :(
Andrew Arnott

n'oubliez pas de vous connecter à cmd avant d'essayer de lancer rmdir.
brianpeiris

8
Pour ceux qui ne peuvent pas utiliser cette solution, j'ai une solution alternative qui fonctionne pour moi (avec des noms de chemin / fichier trop longs): Déplacez le (s) fichier (s) / répertoire vers C: \ pour raccourcir le chemin, puis supprimez-le.
Anders Sandberg Nordbø

6
Il est possible d’avoir des répertoires pour lesquels cette solution ne fonctionnera pas, que 7-Zip pourra supprimer. Je viens d'avoir ce qui m'est arrivé.
SamStephens

2
Cette solution permet d'obtenir des résultats incohérents. S'il vous plaît, ne votez pas.
hectorpal

29

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 .

Capture d'écran de la boîte de dialogue de suppression FastCopy

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


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

J'avais un ensemble de fichiers / dossiers imbriqués généré de manière récursive. C'était la seule solution qui fonctionnait
Pierluigi

2
Cela a fonctionné pour moi quand, les commandes en ligne de commande ont échoué, la tentative de 7zip a échoué. et même le support technique de Microsoft était déroutant!
Kit Ramos

Idem ici - j'ai en quelque sorte commencé à supprimer des fichiers avec 7zip, mais il a également agi de manière très bizarre et je devais Maj + Delere chaque répertoire plusieurs fois de suite pour le supprimer, mais j'ai ensuite essayé cet outil et j'ai travaillé comme un charme . Lancé deux fois pour se débarrasser de tous les fichiers. Merci!
Artanis

Merci, pour moi aussi la seule solution de travail, GREAT !!!!
tim

26

Sans installer de logiciel supplémentaire, vous pouvez utiliser la substcommande 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 deletedvous 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 deletedfacilement dans l'Explorateur Windows ou dans l'invite de commande. Pour supprimer l'alias de lettre de lecteur temporaire, utilisez la commande

subst x: /d

J'ai essayé toutes les autres réponses (y compris les réponses de questions similaires) et c'était la seule qui a finalement fonctionné pour moi. Et c'était de loin le plus rapide.
glenneroo

1
C’est de loin la meilleure solution: des fonctionnalités simples et intégrées, aucun problème avec le registre. Devrait être la réponse acceptée.
Kevin Roche

Facilement la méthode la plus propre et la plus simple, merci Kenneth.
Seth

Euh, cette réponse me fait peur parce que j'ai un lecteur X:. Il n'y a pas assez d'informations ici et je ne recommande pas aux gens de suivre ceci sans autre explication.
Qodeninja

25

Cygwin rm -rffonctionne bien sur les longs chemins!


3
Cygwin a parfaitement travaillé pour moi! Vient de faire un -rm -rf et tous les fichiers ont été supprimés.
Ranhiru Jude Cooray

3
J'ai aussi travaillé pour GNU bash, version 4.1.10 (4)
release

2
Très bien fonctionné en exécutant depuis une fenêtre de commande Git Bash. J'avais installé GitGui pour cela.

22

Passez de Powershell à la commande en exécutant ci-dessous:

Cmd /C "rmdir /S /Q <dir>" 

3
"Le répertoire n'est pas vide". Oops. L'OP veut supprimer un dossier non vide.
leye0

En quoi cela diffère-t-il de la réponse de @herms?
bigbadmouse

18

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.

  1. Téléchargez et installez la dernière version stable de 7zip .
  2. Exécutez le gestionnaire de fichiers 7zip ( 7zfm.exe ).
  3. Dans le gestionnaire de fichiers 7zip, naviguez afin que vous puissiez voir le nom du dossier que vous souhaitez supprimer (c’est-à-dire que vous vous trouvez dans le dossier parent).
  4. Maintenez le bouton Shift enfoncé.
  5. Cliquez sur le bouton " Supprimer " sur votre clavier ou dans la barre d’outils du gestionnaire de fichiers 7zip; assurez-vous de maintenir la touche Maj enfoncée .
  6. Cliquez sur le bouton " OK "; assurez-vous que vous maintenez toujours la touche Maj enfoncée .

Bien essayé mais cela ne fonctionnait toujours pas pour moi avec 10 k de dossiers récursifs. Seulement rimraf a fonctionné.
Julian Knight le

@ JulianKnight: Ouais, cette approche n'a pas fini pour moi de fonctionner 100% du temps non plus. Je voulais juste en parler parce que cela faisait partie des processus les plus simples, et que cela fonctionnait au moins une partie du temps. La seule chose que j'ai trouvée qui fonctionne 100% du temps est l'approche de script du module Powershell + NTFSSecurity, que j'ai décrite ci-dessous. IIRC rimraf a échoué lorsqu’il a été appelé, c’est la raison pour laquelle j’ai commencé à me perdre. Voir ce fil de discussion Node.js pour plus de détails: github.com/nodejs/node-v0.x-archive/issues/…
Mass Dot Net

Oui, il y aura toujours des problèmes comme ça. En fait, c'est le code d'installation de la bibliothèque de l'EDI Arduino qui m'a créé (Java). J'ai accidentellement sélectionné le dossier contenant les bibliothèques comme dossier d'installation d'une bibliothèque et c'est parti! J'ai mis fin au processus dès que je me suis rendu compte, mais j'avais déjà une dizaine de k de dossiers (sacrément i7 / SSD!). La prochaine version principale de NPM est censée aider à résoudre bon nombre des problèmes d'installation de la bibliothèque en profondeur de Node car les dépendances doivent être respectées. une structure beaucoup plus plate. Néanmoins, je suis vraiment heureux que quelqu'un m’ait mis sur rimraf - facile et gratuit.
Julian Knight le

@JulianKnight - Oui, il y a un jour ou deux, quelqu'un m'a dit que npm3 devrait aider à résoudre ces problèmes en empêchant les structures de dossiers de dépendance imbriquées en profondeur.
Mass Dot Net

Je ne sais pas s'il "empêche", mais il traite les dépendances imbriquées de manière plus judicieuse. Ainsi, si votre application principale nécessite la bibliothèque X v1.0 et que la bibliothèque Y nécessite Z, qui requiert également X v1.0, la bibliothèque de niveau supérieur sera utilisée. Actuellement, Z installerait sa propre version de X.
Julian Knight

11

Il y a deux choses qui ne sont pas déjà mentionnées dans les réponses existantes.

  1. Vous pouvez utiliser le préfixe de chemin de longueur étendue pour accéder à des chemins longs.
  2. Avec Windows 10, vous pouvez activer la prise en charge des chemins longs pour une utilisation générale. Notez cependant que toutes les applications ne fonctionneront pas avec des chemins longs, vous devez tester les logiciels plus anciens. Seuls les logiciels avec une entrée de manifeste appropriée pourront l'utiliser.

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:

\\?\D:\very long path

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.

  1. Courez regedit.exe.
  2. Confirmez l'invite UAC.
  3. Naviguez jusqu'à la clé: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Créez ou modifiez la clé LongPathsEnabled.
  5. S'il n'existe pas, cliquez avec le bouton droit sur Stratégies et sélectionnez Nouveau> Valeur de Dword (32 bits) dans le menu.
  6. Définir LongPathsEnabledsur 1pour 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:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

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.


{48981759-12F2-42A6-A048-028B3973495F}Machineune partie du chemin du registre sera différente sur chaque ordinateur - cela ne sera peut-être pas évident pour tout le monde
maoizm

1
@maoizm - bon point, merci de l'avoir souligné. Veuillez consulter ma mise à jour pour une alternative si vous utilisez la mise à jour d'anniversaire W10 ou une version ultérieure.
Julian Knight

J'écris une bibliothèque appelée FoundationIO et j'essaie de définir le chemin par défaut comme chemin par défaut. Existe-t-il une fonction que je peux appeler ou une macro que je peux définir pour que le support de chemin d'accès long soit automatiquement activé pour tout utilisateur de ma bibliothèque?
MarcusJ

Bonjour Marcus, s'agit-il d'une bibliothèque Windows native? Si tel est le cas, .NET dispose déjà du support requis dans l’API Windows concernée - désolé de ne pas connaître les détails, car je ne suis pas un programmeur .NET ou Win API, mais les détails doivent pouvoir être recherchés sur MSDN.
Julian Knight le

8

J'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.


1
J'ai écrit un petit outil qui fait exactement cela et l'a mis à la place de GitHub. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud

1
Toutes les commandes ou Maj + Suppr ne fonctionnent pas pour moi, mais cela fonctionne.
larkee

Ça ne marche pas vraiment quand on a 10 Ko de dossiers imbriqués
Julian Knight

Cela ne fonctionne pas non plus si l’un des dossiers a un nom vraiment long (vous ne pouvez pas renommer le dossier incriminé).
aucuparia

7

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 -rfpour les dossiers)


1
Pour les non-initiés, veuillez expliquer comment vous "ouvrez un shell bash" sous Windows?
OMY

1
@OMY vous avez besoin de git installé. Ensuite, depuis le menu de démarrage, vous pouvez ouvrir git bash ou si vous avez choisi les extensions shell lorsque vous avez installé git, vous pouvez cliquer avec le bouton droit de la souris sur ou sur un dossier et sélectionnerGit Bash Here
Utilisateur

4

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 .


1
Merci le seigneur j'ai trouvé ceci. Avoir des problèmes pour supprimer un dossier node_modules parce qu'il décide d'imbiber bêtement les répertoires.
Alias

Eh bien, @Alias, Total Commander rend ce problème plus facile à détecter, du moins pour moi. Après avoir identifié ce problème, chkdskdevrait le résoudre.
Sopalajo de Arrierez

La version 7.0 ne fonctionne pas, elle affiche un message d'erreur et suggère d'effectuer l'opération en tant qu'administrateur, ce qui échoue également.
izogfif

@izogfif: la dernière version à ce jour est la 8.52a. Je voudrais essayer celui-ci. Vous ne donnez pas de détails sur votre message d'erreur, mais vous pourriez avoir une incohérence sur la structure d'archive qui doit être résolue (pour NTFS au moins) avec "chkdsk c: / f" (en supposant que le lecteur C :).
Sopalajo de Arrierez

2

Vous pouvez également les supprimer en utilisant leur nom abrégé équivalent. dir /xva vous montrer.


2

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


2
Et si vous ne souhaitez pas utiliser Java, vous pouvez utiliser l'outil que j'ai écrit en utilisant .NET ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

@PierreArnaud une grande utilité. J'avais besoin de quelque chose comme ça pour l'automatisation en ligne de commande. @ CamHart du bon travail de vous aussi! Merci les gars!
dimanche

1

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:


1

Bigger Directories est également conçu pour cette tâche. entrez la description de l'image ici

  • Télécharger
  • Utilise un appel récursif avec RemoveDirectoryW pour supprimer des répertoires existants
  • Utilise son propre référentiel 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 contenant.
  • Rapide, bien que la navigation en haut du répertoire soit un clic par répertoire imbriqué
  • Windows XP (SP3) et plus
  • Code non géré non signé sans programme d'installation, donc avertissement possible pour Smartscreen lorsqu'il est exécuté à partir du dossier de rechange, par exemple, du bureau

Plus d'infos sur CodeProject .


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

@ David: Mieux? Link était très utile, merci.
Laurie Stearn

1

J'ai fait face à ce problème dans Windows 10 et trouvé cette solution facile.

  1. Allez au plus profond de votre arborescence de dossiers.
  2. Faites glisser et déposez un dossier du milieu de l’arbre au début de celui-ci à l’aide de la barre d’adresse.
  3. Comme dans mon image, glissez-déposez la zone rouge dans la zone verte. (dans ce cas, le chemin est plus court, mais cela fonctionne aussi pour les longs chemins)
  4. Ensuite, votre chemin devient plus court et supprimez comme d'habitude en utilisant la touche Suppr.

entrez la description de l'image ici


1

Vous avez la réponse parfaite ici (pour les fichiers). 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 en 4 questions ne suffisait à mes besoins. Vous êtes les bienvenus dans le monde.


0

J'ai finalement découvert comment faire cela via Powershell. Voici les instructions que j'ai suivies pour que cela fonctionne avec Windows 7:

  1. 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 .

  2. Téléchargez le package du module PowerShell Security du système de fichiers - il devrait être disponible sous forme de fichier ZIP simple.

  3. Ouvrez une console Powershell, exécutez Get-Module -ListAvailable et assurez-vous que NTFSSecurity apparaît quelque part dans la liste des modules enregistrés.
  4. Dans la console Powershell, exécutez Import-Module NTFSSecurity .
  5. Dans la console Powershell, exécutez Remove-Item2 "YYYY" -Recurse , où AAAA est le chemin Windows du dossier que vous souhaitez supprimer de manière récursive (par exemple, C: \ Potatoes \ Badgers \ FolderToDelete ).

0

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:

  1. Téléchargez le package du module PowerShell Security du système de fichiers - il devrait être disponible sous forme de fichier ZIP simple.
  2. Extrayez le fichier Zip en tant que dossier NTFSSecurity dans le répertoire C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules.
  3. Ouvrez une console Powershell avec l'élévation administrative (aka mode Admin) et exécutez Get-Module -ListAvailable et assurez - vous NTFSSecurity montre quelque part dans la liste des modules enregistrés.
  4. Exécutez Set-ExecutionPolicy Unrestricted pour contourner le mode d'exécution signé. Vous devez confirmer cette action avec un Y (es)
  5. Finalement, cd dans le dossier que vous voulez supprimer.
  6. Dans la console Powershell, exécutez Import-Module NTFSSecurity .
  7. Dans la console Powershell, exécutez Remove-Item2 "YYYY" -Recurse , où YYYY est le chemin Windows relatif ou absolu du dossier que vous souhaitez supprimer de manière récursive (par exemple, C: \ Potatoes \ Badgers \ FolderToDelete ).
  8. Vérifiez si cela a fonctionné.
  9. Revenez éventuellement au mode d'exécution signé avec Set-ExecutionPolicy Restricted . Vous devez confirmer cette action avec Y (es).

0

Si Bash sous Ubuntu sous Windows est installé, vous pouvez accéder au répertoire parent dans une invite de commande normale, puis taper:

bash -c "rm -rf dirname_here"

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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.