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
Thèmes : windows - script - batch - wmi
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