例如,我有
PATH\ParentFolder\SubFolder1\SubSubFolder11
PATH\ParentFolder\SubFolder1\SubSubFolder12
PATH\ParentFolder\SubFolder2\SubSubFolder21
我需要删除除SubSubFolder11
以外的所有内容。
我认为最好的方法是制作循环并删除除SubSubFolder11
以外的每个文件夹。或者将文件夹标记为隐藏?
(我是批量新手)
答案 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