91 votes

Supprimer tous les fichiers d'un dossier et de ses sous-dossiers

Je veux supprimer tous les fichiers d'une structure de dossier, de sorte que je me retrouve avec une structure de dossier vide.

Cela peut-il être réalisé par lot ou par VBScript scripting ?

J'ai essayé une commande batch très basique, mais cela nécessitait que l'utilisateur autorise la suppression de chaque fichier. Ce n'était pas une solution appropriée car il y a plusieurs centaines de fichiers et cela va augmenter massivement avec le temps.

Que pouvez-vous suggérer ?

103voto

MDMoore313 Points 5492

Cela peut être accompli en utilisant PowerShell :

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

Cette commande récupère chaque élément enfant dans $path et exécute la méthode de suppression sur chacun d'eux, ce qui est assez rapide. La structure du dossier est laissée intacte.

Si vous avez des fichiers sans extension, utilisez

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

à la place.

Il semble que le -File a peut-être été ajouté après la version 2 de PowerShell. Si c'est le cas, le paramètre

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

Cela devrait faire l'affaire pour les fichiers qui ont une extension.

Si cela ne fonctionne pas, vérifier si vous avez une version à jour de Powershell

87voto

Evan Nadeau Points 987

PowerShell court et doux. Je ne suis pas sûr de la version la plus basse de PS avec laquelle il fonctionnera.

Remove-Item c:\Tmp\* -Recurse -Force

23voto

nivlac Points 141

Vous pouvez le faire avec del commandement :

dir C:\folder
del /S *

El /S permet de supprimer uniquement les fichiers de manière récursive.

5voto

Gregory Suvalian Points 171

Utilisation de PowerShell :

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse

4voto

En lisant entre les lignes de votre question initiale, je peux vous proposer une ligne de code BATCH alternative que vous pouvez utiliser. Lorsqu'elle est exécutée, elle ne supprime que les fichiers qui ont plus de 60 jours. De cette façon, vous pouvez mettre cela dans une tâche planifiée et quand il s'exécute, il supprime les fichiers excédentaires dont vous n'avez pas besoin plutôt que de détruire le répertoire entier. Vous pouvez changer 60 à 5 jours ou même 1 jour si vous le souhaitez. Ceci ne supprime pas les dossiers.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"

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