web-dev-qa-db-fra.com

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

Je veux supprimer tous les fichiers d'une structure de dossiers, il me reste donc une structure de dossiers vide.

Cela peut-il être réalisé en batch ou 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 augmentera massivement avec le temps.

Que pouvez-vous suggérer?

42
BobJim

Ceci 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, exécute la méthode de suppression sur chaque élément et 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()}

au lieu.

Il semble que le paramètre -File ait été ajouté après PowerShell v2. Si c'est le cas, alors

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

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

Si cela ne fonctionne pas, vérifiez si vous disposez d'une version à jour de Powershell

65
MDMoore313

Vous pouvez le faire avec la commande del:

dir C:\folder
del /S *

Le commutateur /S consiste à supprimer uniquement les fichiers de manière récursive.

21
phoops

PowerShell court et suite. Pas sûr de ce que la version la plus basse de PS, il travaillera avec.

Remove-Item c:\Tmp\* -Recurse -Force
13
Evan Nadeau

En lisant entre les lignes de votre question initiale, je peux vous proposer une autre ligne de code BATCH que vous pouvez utiliser. Lorsque cela sera exécuté, cela ne supprimera que les fichiers de plus de 60 jours. De cette façon, vous pouvez l'insérer dans une tâche planifiée. Lorsqu'il s'exécute, il supprime les fichiers superflus dont vous n'avez pas besoin au lieu de supprimer tout le répertoire. Vous pouvez changer de 60 à 5 jours ou même 1 jour si vous le souhaitez. Cela ne supprime pas les dossiers.

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

Utilisation de PowerShell:

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

Utilisez PowerShell pour supprimer un fichier ou un dossier unique. Avant d'exécuter la commande Supprimer dans Powershell, nous devons nous assurer que vous êtes connecté au serveur ou au PC avec un compte disposant d'un accès complet aux objets que vous souhaitez supprimer.

Avec l'exemple:http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Utilisation de commnads PowerShell pour supprimer un fichier

Remove-Item -Path "C:\dotnet-helpers\DummyfiletoDelete.txt"

La commande ci-dessus exécutera et supprimera le fichier “DummyfiletoDelete.txt” qui se trouve à l’emplacement de “C:\dotnet-helpers”.

Utilisation de commnads PowerShell pour supprimer tous les fichiers

Remove-Item -Path "C:\dotnet-helpers *. *"

Utilisation de commnads PowerShell pour supprimer tous les fichiers et dossiers

Remove-Item -Path "C:\dotnet-helpers *. *" -Recurse

-recurse explore et trouve beaucoup plus de fichiers. Le paramètre –recurse permettra à PowerShell de supprimer tout élément enfant sans demander la permission. De plus, le paramètre –force peut être ajouté pour supprimer les fichiers cachés ou en lecture seule.

Utilisation de la commande -Force pour supprimer des fichiers avec force

Utilisation de la commande PowerShell pour supprimer tous les fichiers avec force

Remove-Item -Path "C:\dotnet-helpers *. *" -Force

2
thiyagu selvaraj

C’est le moyen le plus simple IMO

Ouvrez PowerShell, accédez au répertoire (cd),PUIS

ls -Recurse * | rm

(Poof) tout est parti ...

Si vous souhaitez supprimer en fonction d'une extension spécifique

ls -Recurse *.docx | rm

ls répertorie le répertoire

-Recurse est un drapeau qui indique à PowerShell d'aller dans n'importe quel sous-répertoire

* dit tout

*.doc tout avec l'extension .doc

| alimente la sortie de gauche à droite

rm delete

Toutes les autres réponses semblent rendre cela plus déroutant que nécessaire.

1
Kolob Canyon

Essayez ceci avec PowerShell. Dans cet exemple, je souhaite supprimer tous les fichiers .class:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
Boubakr

Supprimez tous les fichiers du répertoire actuel et des sous-répertoires en laissant la structure des dossiers.

Le commutateur (/Q) sert à demander à l'utilisateur s'il accepte de supprimer

Attention : essayez sans le /Q pour vous assurer de ne rien supprimer de précieux.

del /S * /Q 
1
hdoghmen
  1. Dans l'Explorateur Windows, sélectionnez le répertoire racine contenant tous les fichiers et dossiers.

  2. Rechercher *

  3. Trier par type (Tous les dossiers seront en haut et tous les fichiers listés en dessous)

  4. Sélectionnez tous les fichiers et appuyez sur Supprimer.

Cela supprimera tous les fichiers et préservera la structure de répertoires.

1
Emel
dir C:\testx\ -Recurse -File | rd -WhatIf
What if: Performing the operation "Remove File" on target "C:\testx\x.txt".
What if: Performing the operation "Remove File" on target "C:\testx\bla\x.txt".
0
user646044