问题 Windows批处理脚本删除文件夹中的所有内容


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

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

而且效果很棒! 唯一的问题是我想排除一个或多个文件夹,例如XCOPY排除功能。

我只是想不出如何将其添加到脚本中。


11086
2018-06-09 18:09


起源

我应该说它也删除文件,女巫也是目的。 - Thomas K


答案:


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

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

16
2018-06-09 19:23





需要有一个&只是在“%% i”和DEL之间,否则它将删除文件夹但不删除文件。


0
2017-08-07 13:08





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

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

0
2017-09-02 12:38