2010-06-09 11 views
11

Ho uno script per eliminare tutte le sottocartelle ei file in una cartella:script batch di Windows per eliminare tutto in una cartella tranne uno

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

e funziona benissimo! L'unico problema è che vorrei escludere una o più cartelle, come la funzione di esclusione XCOPY.

Non riesco a capire come potrei aggiungerlo alla sceneggiatura.

+0

e dovrei dire che elimina anche i file, strega è anche lo scopo. –

risposta

15

Si potrebbe provare a nascondere le cartelle prima del ciclo for-, e li unhide in seguito, in questo modo:

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! Funziona perfettamente! :-) –

0

ci deve essere un & proprio tra "%% i" e CANC altrimenti eliminerà le cartelle ma non i file.

0

Ecco un modo che non tocca il file e/o directory esclusi, in modo che nessun attributi sono alterati:

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 
Problemi correlati