web-dev-qa-db-fra.com

Quelle est la meilleure façon de supprimer 100 000 fichiers d'un répertoire Windows

J'ai eu un utilisateur avec plus de 100 000 fichiers dans un seul répertoire. La machine se verrouille et devient inutilisable pendant une longue période, tandis que l'explorateur remplit la mémoire et la machine peut se bloquer. Existe-t-il un moyen simple de déversoir le répertoire et le contenu? Nous avons essayé d'utiliser la ligne de commande Deltree et cela n'a pas beaucoup coulé beaucoup mieux.

Davef

Supplémentaire -

Nous avons eu ce problème plusieurs fois avec le même utilisateur (en réalité client). Un programme crée des centaines de milliers de fichiers temporaires pendant sa course. Si le programme fonctionne correctement, cela n'a pas d'importance car ils sont supprimés de ralentissement, car il est fini avec cela. Mais de temps en temps, il meurt de quitter le désordre des fichiers. Nous avons essayé d'utiliser des méthodes RMDIR et DEL etc et ils sont plus rapides que d'utiliser Explorer, mais nous nous retrouvons généralement avec les mêmes problèmes. La partition est endommagée, il existe un fichier verrouillé inexpliqué, certains fichiers ont un problème d'autorisation, ce qui empêche la suppression du travail. Normalement, ces problèmes peuvent être fixés avec un redémarrage, mais dans ce cas, il s'agit d'un système essentiel que nous ne pouvons pas en période de production. Sur UNIX, vous pouvez simplement faire un RM -RF, etc. Ceci est rapide et il n'y a généralement aucun problème réel avec elle. Tous les outils de ligne de commande que nous avons essayés ne sont pas coutumes pour travailler de manière fiable.

BTW - La demande est en cours de modification mais cela n'ira pas à la production pendant un certain temps et que ce problème était probablement intéressant pour les autres.

Mise à jour - Parce que nous avons MKS Caskcracker sur le système (sans les utilitaires de ligne de commande), nous avons eu le programmeur pour assommer un simple RM. Il s'agit de plusieurs commandes plus rapidement que Del/Deltree, etc. Je trouve qu'il est étrange qu'il n'y ait pas une application simple aussi simple disponible en tant qu'outil standard Windows System Admin.

12

Vous pouvez utiliser rmdir:

rmdir /s /q FOLDERNAME

Drapeaux: /s signifie supprimer récursivement, /q est le mode "silencieux".

15
splattne

J'utilise pour avoir ce problème avec les serveurs que j'étais administré. Sautez l'explorateur tout à fait et utilisez l'invite de commande. Naviguez jusqu'au dossier et "del ."

De cette façon, vous évitez que les frais généraux de l'interface graphique (Explorer sont des ordures) et recycler la corbeille.

6
user3913

Sauf si vous avez besoin de cela pour les applications héritées 16 bits, essayez d'augmenter les performances en désactivant la génération de noms de fichiers courte. Cela peut avoir un impact significatif sur les opérations d'annuaire avec un grand nombre de fichiers.

Regedt32 select:
"HKLM\system\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameC
reation"=1

Ensuite, utilisez:

Rmdir/s/q [lecteur:] chemin

pour supprimer le répertoire avec tous ses fichiers.

4
Peter Stuer

Que diriez-vous de déplacer ce dossier Temp sur un autre lecteur/partition? Au lieu de supprimer toutes les ordures, vous pouvez formater le lecteur (GUI ou ligne de commande). Avec un format rapide, cela devrait être raisonnablement rapide.

3
Michael

Ceci est une combinaison des postes précédents

ouvrez une fenêtre de commande:
[.____] File -> Run -> cmd

Supprimer le répertoire
[.____] rmdir /s /q FOLDERNAME

OR

Supprimer un modèle de fichiers
[.____] cd \....\directory
del *.[something]

Comme vous l'avez noté dans votre question Windows Explorer, vous pouvez vraiment réduire les choses.

Après avoir vu votre mise à jour, j'ai un de mes deux
Consultez cette page Liste des détachants de fichiers

2
Brad Bruce

Vous pouvez également démarrer dans la console de récupération, ou quelque chose selon ces lignes. Cela devrait ignorer complètement les problèmes étranges avec le système d'exploitation.

1
Yannone

Une partition endommagée de supprimer des fichiers? C'est un problème majeur avec le disque, quel que soit le nombre de fichiers supprimés.

J'essaierais la ligne de commande Supprimer et supprimer autant que possible jusqu'à ce que vous rencontriez un qui est verrouillé. Ensuite, utilisez Explorateur de processus pour trouver quel processus a ce fichier ouvert. Tuez ce processus (si vous le pouvez), puis faites-le supprimer à nouveau. Rincer, répéter :)

1
DougN

Montez le dossier d'une machine Linux et faites la suppression récursive de là.

# mount -t cifs //server/share /mnt/tobedeleted -o username=yourshareusername

# rm /mnt/tobedeleted/* -R

Vous pouvez même utiliser un travail cron pour supprimer les fichiers à un intervalle régulier.

1
steve

Les différentes méthodes surtout sur tous les travaux. Si vous avez Cygwin chargé sur une clé USB, vous pouvez simplement le brancher à votre USB local, enfoncez votre coquille Cygwin et exécutez la commande RM comme référencée ci-dessus. Ceci est un moyen pratique de maintenir la flexibilité Unix à portée de main.

1
user13846

Je n'ai rien de mieux que DEL et RM, mais même s'ils prennent très longtemps, cela ne devrait pas endommager la partition. Les fichiers verrouillés peuvent être parce que le programme qui les a créés est mort de manière inattendue.

Parfois, même si les fichiers ne peuvent pas être supprimés, ils peuvent être déplacés vers un autre sous-répertoire temporaire. Je crée juste un sous-répertoire _Todel et déplacez-les là-bas. Cela fonctionne généralement mieux si je déplace tout le répertoire un niveau supérieur, plutôt que les fichiers eux-mêmes.

Autre que cela, la seule façon de rendre les suppresses aller plus vite est de défragmenter le disque dur. Une solution de contournement temporaire peut être de déplacer ce répertoire sur une part de samba ou d'utiliser une jonction NTFS sur un disque dur USB portable. (Une petite partition serait meilleure et plus rapide que d'utiliser tout le disque dur). Vous pouvez alors simplement éjecter le disque dur et faire un format rapide sur un autre PC.

1
chayim

Pourquoi ne pas simplement utiliser Robocopy et miroir un répertoire vide?

Créez simplement un dossier vide, puis utilisez:

ROBOCOPY C:\ThisIsAnEmptyFolder C:\Users\SomeUser\Desktop\SomeFolderWithTempFiles /MIR
1
NotoriousPyro

Si aucune des autres suggestions ne fonctionne, avez-vous envisagé de accélérer vos E/S?

Acheter de meilleurs contrôleurs, disques plus rapides ..

Ou je me demande, si les fichiers sont temporaires (comme vous l'impliquent) et les tailles, vous pouvez ajouter un supplément RAM à la boîte (bon marché) et configurer un disque RAM?

Meilleur cas, la performance ne serait pas dégradée lors de la suppression de gros volumes de fichiers. Le pire des cas, un redémarrage effacerait la partition.

0
tomfanning

Essayez de couper et de la coller dans la corbeille de recyclage, elle devrait contourner d'essayer de déplacer chaque fichier. Je ne sais pas ce qu'il va faire pour vider le bac, car il ira probablement sur chaque fichier.

0
Erwin Blonk

La suppression avec Maj + del apportera-t-elle une différence quant à la vitesse?

0
Kevin Kuphal