Windows批处理脚本删除除了一个文件夹中的所有内容

我有一个脚本来删除文件夹中的所有子文件夹和文件:

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

它工作的很棒! 唯一的问题是,我想排除一个或多个文件夹,如XCOPY排除function。

我只是不知道如何将其添加到脚本。

Solutions Collecting From Web of "Windows批处理脚本删除除了一个文件夹中的所有内容"

您可以尝试在for循环之前隐藏文件夹,然后取消隐藏它们,如下所示:

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

需要在“%% i”和DEL之间加一个“&”,否则会删除文件夹而不是文件。

这是一种不会触及排除的文件和/或目录的方式,因此不会更改任何属性:

 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