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

批处理脚本问题:无法实现删除除指定文件外的所有文件及文件夹

批处理脚本修改方案

针对你的问题解答

  • 第一个脚本里的(*.pdf)必须移除,因为你要处理目录下所有文件而非仅PDF,替换成(*.*)才能实现全文件遍历。
  • 桌面文件没被删除,是因为脚本默认处理当前运行目录而非桌面路径。如果要处理桌面,需把脚本中的路径改成桌面绝对路径,比如SET "folder[path]=%USERPROFILE%\Desktop"。

整合需求的最终脚本

以下脚本可实现:删除指定目录中,除.txt/.bat/.exe三类文件、以及指定文件名之外的所有文件和文件夹。

@ECHO OFF & SETLOCAL ENABLEDELAYEDEXPANSION

:: 设置目标目录,默认桌面,可自行修改
SET "target_dir=%USERPROFILE%\Desktop"
:: 设置需要保留的扩展名,空格分隔
SET "keep_exts=.txt .bat .exe"
:: 设置需要保留的指定文件名,带空格的文件名加引号,空格分隔
SET "keep_files=testfile.EXE "test remove.bat""

:: 切换到目标目录
PUSHD "%target_dir%"

:: 处理文件:删除不符合保留规则的文件
FOR %%f IN (*.*) DO (
    SET "keep=0"
    
    :: 检查是否在保留文件名列表中
    FOR %%k IN (%keep_files%) DO (
        IF /I "%%~nxf"=="%%~k" SET "keep=1"
    )
    
    :: 检查扩展名是否在保留列表中
    IF "!keep!"=="0" (
        IF NOT "!keep_exts:%%~xf=!"=="!keep_exts!" SET "keep=1"
    )
    
    :: 无需保留则删除文件
    IF "!keep!"=="0" (
        ECHO 删除文件: "%%f"
        DEL /F /Q "%%f"
    ) ELSE (
        ECHO 保留文件: "%%f"
    )
)

:: 处理文件夹:删除不符合规则的文件夹(会删除文件夹内所有内容)
FOR /D %%d IN (*) DO (
    :: 如需保留特定文件夹,添加判断逻辑,示例:
    :: IF /I "%%~nxd"=="my_important_folder" SET "keep=1"
    
    :: 默认删除所有文件夹,按需修改
    ECHO 删除文件夹: "%%d"
    RD /S /Q "%%d"
)

POPD
ENDLOCAL
EXIT /B

脚本说明

  • 修改target_dir可指定要处理的目录,默认指向桌面。
  • keep_exts中添加需要保留的文件扩展名,用空格分隔即可。
  • keep_files中添加需要保留的指定文件名,带空格的文件名要加引号包裹。
  • 文件夹处理部分默认删除所有文件夹,若有需要保留的文件夹,按照注释示例添加判断逻辑即可。
  • 脚本里的ECHO行是预览操作,确认逻辑无误后,可去掉ECHO 直接执行删除命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:05:10