2010-06-09 8 views
11

J'ai un script pour supprimer tous les sous-dossiers et fichiers dans un dossier:script batch Windows pour supprimer tout dans un dossier, sauf un

FOR /D %%i IN ("D:\myfolder\*") DO RD /S /Q "%%i" & DEL /Q "D:\myfolder\*.*" 

Et il fonctionne très bien! Seul problème est que je voudrais exclure un ou plusieurs dossiers, comme la fonction d'exclusion XCOPY.

Je ne peux pas comprendre comment je pourrais ajouter cela au script.

+0

Et devrais-je dire qu'il supprime également les fichiers, sorcière est aussi le but. –

Répondre

15

Vous pouvez essayer de cacher les dossiers avant la boucle for, et les réafficher plus tard, comme ceci:

ATTRIB +H D:\myfolder\keepit 
FOR /D %%i IN ("D:\myfolder\*") DO RD /S /Q "%%i" DEL /Q "D:\myfolder\*.*" 
ATTRIB -H D:\myfolder\keepit 
+0

Wow! Fonctionne parfaitement! :-) –

0

il faut un & juste entre « %% i » et DEL ou bien elle va supprimer les dossiers mais pas les fichiers.

0

Voici une manière qui ne sont pas en contact avec modifiées le fichier exclus et/ou un répertoire, donc pas d'attributs:

rem // Change to target directory (skip if not found): 
pushd "D:\Data" || exit /B 1 
rem // Iterate through all subdirectories: 
for /D %%D in ("*") do (
    rem // Exclude a certain subdirectory: 
    if /I not "%%~nxD"=="ExcludeDir" rd /S /Q "%%~D" 
) 
rem // Iterate through all immediate files: 
for %%F in ("*") do (
    rem // Exclude a certain file: 
    if /I not "%%~nxD"=="ExcludeFile.txt" del "%%~F" 
) 
popd 
Questions connexes