2010-06-09 18 views
11

Tengo un script para eliminar todas las subcarpetas y archivos en una carpeta:script por lotes de Windows para eliminar todo en una carpeta, excepto uno

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

y funciona muy bien! El único problema es que me gustaría excluir una o más carpetas, como la función de exclusión XCOPY.

No puedo entender cómo podría agregar eso al guión.

+0

Y debería decir que también elimina los archivos, bruja También es el propósito. –

Respuesta

15

Se podría tratar de ocultar las carpetas antes del bucle for-y mostrarlos después, como esto:

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

¡Guau! Funciona perfecto! :-) –

0

es necesario que haya un solo & entre "%% i" y DEL o de lo contrario eliminará las carpetas pero no los archivos.

0

Aquí está una manera que no toque el archivo y/o directorio excluido, por lo que no se alteren los atributos:

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 
Cuestiones relacionadas