删除父文件夹的内容,子文件夹除外

时间:2017-06-29 09:40:09

标签: batch-file

例如,我有

PATH\ParentFolder\SubFolder1\SubSubFolder11
PATH\ParentFolder\SubFolder1\SubSubFolder12
PATH\ParentFolder\SubFolder2\SubSubFolder21

我需要删除除SubSubFolder11以外的所有内容。

我认为最好的方法是制作循环并删除除SubSubFolder11以外的每个文件夹。或者将文件夹标记为隐藏?

(我是批量新手)

1 个答案:

答案 0 :(得分:1)

以下代码段从较深层次结构层开始遍历整个目录树,如果当前路径不包含元素SubFolder11,则删除文件和目录:

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem // Define constants here:
set "_ROOT=PATH"
set "_EXCEPT=SubFolder11"

rem // Iterate over directory tree from deep to shallow levels:
for /F "delims=" %%D in ('
    dir /S /B /A:D "%_ROOT%\*" ^| sort /R
') do (
    rem // Store current directory path with `\` appended:
    set "PDIR=%%~D\"
    setlocal EnableDelayedExpansion
    rem // Check whether path contains dir. name to exclude:
    if /I "!PDIR:\%_EXCEPT%\=!"=="!PDIR!" (
        rem // Dir. name not found, so delete files:
        del /Q "!PDIR!*.*"
        rem // Delete empty sub-directories:
        rd "!PDIR!." 2> nul
    )
    endlocal
)

endlocal
exit /B