本帖最后由 aloha20200628 于 2023-11-22 14:38 编辑
根据路径串联的原则,排除与指定路径无串联关系的所有旁支路径...
调用findstr是为保全 *bat-bak\* 的子文件夹
脚本代码设定初始文件夹为 d:\test\temp
当前脚本为验证版本,若验证结果无误,可删除第11行前缀 'REM 实用版本》',再删除9-10行,改为实用版本。
- @echo off &setlocal enabledelayedexpansion
- cd /d "d:\temp\tmp"
- for /f "delims=" %%d in ('dir/b/s/ad *bat-bak') do (set/a "n+=1" &set _!n!=%%d)
- for /f "delims=" %%d in ('dir/b/s/ad^|findstr /ivc:"bat-bak" ') do (
- set "keep=0" &for /L %%i in (1,1,!n!) do (
- set "_d=!_%%i!"
- if /i "!_d:%%d=!" neq "!_d!" (set "keep=1")
- )
- REM 验证版本
- if !keep! equ 0 (echo,删除》%%d) else (echo,保留》%%d)
- REM 实用版本》if !keep! equ 0 (rd /s/q "%%d"2>nul)
- )
- endlocal&exit/b
复制代码
|