You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Windows Batch脚本保留指定文件夹并删除其余文件夹

批处理批量删除非指定文件夹实现方案

轻量脚本(适合保留文件夹较少的场景)

你可以直接在目标路径下新建.bat后缀的批处理文件,复制以下代码运行即可:

@echo off
setlocal enabledelayedexpansion
:: 替换为你存放所有文件夹的上级目录路径
set "root_dir=C:\你的目标文件夹路径"
:: 填写需要保留的文件夹名称,多个用空格分隔
set "keep_folders=2FL-95 2FL-73 2FL-25"

:: 遍历根目录下所有一级文件夹
for /d %%i in ("%root_dir%\*") do (
    set "folder_name=%%~ni"
    :: 判断文件夹是否在保留列表中
    echo !keep_folders! | find /i "!folder_name!" > nul || (
        :: 测试阶段可以注释下一行,只看输出的待删除列表是否正确
        rmdir /s /q "%%i"
        echo 已删除文件夹:%%i
    )
)
echo 所有操作执行完成
pause

注意:该方案存在低概率部分匹配误判风险,如果你的文件夹名称存在包含关系(比如同时存在2FL-9和2FL-95),请使用下方的高精度方案。

高精度脚本(适合保留文件夹较多的场景)

如果需要保留的文件夹数量较多,你可以把所有要保留的文件夹名称逐行写入同目录下的keep_list.txt,再运行以下脚本,不会出现部分匹配误判问题:

@echo off
setlocal enabledelayedexpansion
:: 替换为你存放所有文件夹的上级目录路径
set "root_dir=C:\你的目标文件夹路径"
:: 保留列表文件路径
set "keep_list=keep_list.txt"

:: 先把所有保留文件夹名存入变量
for /f "delims=" %%a in (%keep_list%) do (
    set "keep_%%a=1"
)

:: 遍历判断是否需要删除
for /d %%i in ("%root_dir%\*") do (
    set "folder_name=%%~ni"
    if not defined keep_!folder_name! (
        :: 测试阶段可以注释下一行,只看输出的待删除列表是否正确
        rmdir /s /q "%%i"
        echo 已删除文件夹:%%i
    )
)
echo 所有操作执行完成
pause

使用注意事项

  • 所有脚本运行前都建议先注释rmdir命令行,运行后查看输出的待删除文件夹列表是否完全符合预期,确认无误后再取消注释执行删除,避免误删数据
  • 路径如果包含空格,必须用英文双引号包裹路径,避免系统识别出错

内容的提问来源于stack exchange,提问作者Nir14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:36:03