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?
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
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.
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
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"
Utilisation de PowerShell:
Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
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/
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”.
Remove-Item -Path "C:\dotnet-helpers *. *"
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
Remove-Item -Path "C:\dotnet-helpers *. *" -Force
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.
Essayez ceci avec PowerShell. Dans cet exemple, je souhaite supprimer tous les fichiers .class:
Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
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
Dans l'Explorateur Windows, sélectionnez le répertoire racine contenant tous les fichiers et dossiers.
Rechercher *
Trier par type (Tous les dossiers seront en haut et tous les fichiers listés en dessous)
Sélectionnez tous les fichiers et appuyez sur Supprimer.
Cela supprimera tous les fichiers et préservera la structure de répertoires.
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".