2014-04-15 12:40:31 +0000 2014-04-15 12:40:31 +0000
57
57

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

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

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

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

Que pouvez-vous suggérer ?

Réponses (13)

81
81
81
2014-04-15 13:18:38 +0000

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 chacun d'eux, et est assez rapide. La structure des dossiers 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 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 avez une version à jour de Powershell

29
29
29
2017-11-02 17:21:27 +0000

Court métrage et suite PowerShell. Pas sûr de la version la plus basse de PS avec laquelle il fonctionnera.

Remove-Item c:\Tmp\* -Recurse -Force
22
22
22
2014-04-15 12:44:30 +0000

Vous pouvez le faire avec la commande del :

dir C:\folder
del /S *

Le commutateur /S permet de ne supprimer que les fichiers de manière récursive.

4
4
4
2014-04-15 13:18:19 +0000

En lisant entre les lignes de votre question initiale, je peux vous proposer une autre ligne de code BATCH que vous pouvez utiliser. Cette ligne vous permettra de ne supprimer que les fichiers datant de plus de 60 jours. De cette façon, vous pouvez le placer dans une tâche planifiée et, lorsqu'il est exécuté, il supprime les fichiers excédentaires dont vous n'avez pas besoin plutôt que de faire sauter tout le répertoire. Vous pouvez changer 60 à 5 jours ou même 1 jour si vous le souhaitez. Cela ne supprime pas les répertoires.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4
4
4
2014-10-28 15:39:38 +0000

Utilisation de PowerShell :

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
3
3
3
2018-05-10 07:13:40 +0000

Utilisez PowerShell pour supprimer un seul fichier ou dossier. Avant d'exécuter la commande Delete dans powerShell, nous devons nous assurer que vous êtes connecté au serveur ou au PC avec un compte qui a un accès complet aux objets que vous voulez supprimer. Avec Exemple : http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Utiliser PowerShell commnads pour supprimer un fichier

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

La commande ci-dessus va exécuter et effacer le fichier “DummyfiletoDelete.txt” qui se trouve à l'intérieur de l'emplacement “C:\dotnet-helpers”.

Utiliser PowerShell commnads pour effacer tous les fichiers

Remove-Item -Path “C:\dotnet-helpers*. *”

Utilisation de PowerShell commnads pour supprimer tous les fichiers et dossiers

Remove-Item -Path “C:\dotnet-helpers*.*” -recurse

-recurse recherche et trouve beaucoup d'autres 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.

Utiliser la commande -Force pour supprimer les fichiers de force

Utiliser la commande PowerShell pour supprimer tous les fichiers de force

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

1
1
1
2014-11-20 21:28:24 +0000

Essayez ceci en utilisant PowerShell. Dans cet exemple, je veux supprimer tous les fichiers .class :

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
1
1
2015-05-18 11:30:46 +0000

Supprimez tous les fichiers du répertoire et des sous-répertoires actuels mais en laissant la structure des répertoires. Le commutateur

(/Q) permet de demander à l'utilisateur s'il est d'accord pour supprimer

Caution : essayez-le sans le /Q pour vous assurer que vous ne supprimez rien de précieux.

del /S * /Q
1
1
1
2016-10-12 20:45:27 +0000

C'est la façon la plus simple d'ouvrir IMO

Open PowerShell, de naviguer vers le répertoire (cd), ALORS

ls -Recurse * | rm

(Poof) tout est parti…

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

ls -Recurse *.docx | rm

ls liste le répertoire

-Recurse est un drapeau indiquant à powerShell d'aller dans n'importe quel sous-répertoire

* dit tout

*.doc tout avec . doc extension

| alimente la sortie de gauche à droite

rm supprime

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

1
1
1
2015-03-16 09:12:32 +0000
  1. Dans l'explorateur Windows, sélectionnez le répertoire racine contenant tous les fichiers et dossiers.

  2. Recherchez *

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

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

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

0
0
0
2020-03-01 06:34:32 +0000

Nous pouvons supprimer tous les fichiers du dossier et de son sous-dossier en utilisant la commande ci-dessous.

Get-ChildItem -Recurse -Path 'D:\Powershell Practice' |Where-Object{$_.GetType() -eq [System.IO.FileInfo]} |Remove-Item
0
0
0
2020-02-04 17:43:55 +0000

Avec Powershell 5.1 :


$extensions_list = Get-ChildItem -Path 'C:\folder_path 

* * * 

Il supprime tous les itens qui ne sont pas du répertoire. 

$extension.FullName = Chemin de l'objet 

$extension.Attributes = Type d'objet (répertoire ou archive) -Recurse

foreach ( $extension in $extensions_list) {

    if ($extension.Attributes -notlike "Directory") {

        Remove-Item $extension.FullName  
    }
}

Il supprime tous les itens qui ne sont pas du répertoire.

$extension.FullName = Chemin de l'objet

$extension.Attributes = Type d'objet (répertoire ou archive)

-1
-1
-1
2018-10-14 14:59:48 +0000

En complément des réponses ci-dessus, il n'est en fait pas nécessaire d'utiliser le Get-Childitem et de transmettre le résultat au pipeline dans les réponses ci-dessus, car le mot-clé -Include est inclus dans la commande Remove-Item

On peut simplement :

Remove-Item -Include “.” “C:\Temp” -Recurse