Comment supprimer le contenu d'un répertoire de manière récursive en batch Windows ?
Réponses rédigées par Antoine
Dernière mise à jour : 2018-10-28 12:14:11
Question
J'ai un dossier qui contient à la fois des fichiers et d'autres répertoires, qui contiennent eux même d'autres fichiers et répertoires , et ainsi de suite. Comment faire un batch Windows pour effacer tout le contenu du répertoire racine de manière récursive ?
Réponse
Pour effacer de manière récursive tout le contenu d'un répertoire sous Windows, avec un batch, il faut :
- Utiliser la commande del pour supprimer tous les fichiers de manière récursive.
- Lancer une boucle for dans le répertoire racine pour identifier tous les dossiers enfants, et ensuite les supprimer.
Exemple : test.bat supprime de manière récursive le contenu de c:\test\
del /s /f /q c:\test\*.*
for /f %%f in ('dir /ad /b c:\test\') do rd /s /q c:\test\%%f
Réponse
Vous pouvez également utiliser WMI, via un fichier vbs, pour effacer un répertoire et tout son contenu :
Exemple : test.vbs supprime de manière récursive le répertoire c:\test
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * from Win32_Directory where Name = 'c:\\test'")
For Each objFolder in colFolders
errResults = objFolder.Delete
'Wscript.Echo errResults
Next