Windows环境下批量删除文件夹内仅有1个/2个/*个文件的文件夹 1若删除文件夹中仅有1个文件的2新建文本文档另存为 “删除单文件的文件夹.bat” 修改第二行路径双击运行echo off chcp 65001 nul set RootD:\TestFolder :: 遍历一级子文件夹 for /d %%d in (%Root%\*) do ( setlocal enabledelayedexpansion set cnt0 :: 统计文件夹内文件数量 for %%f in (%%d\*.*) do set /a cnt1 if !cnt! equ 1 ( for %%f in (%%d\*.*) do ( move %%f %Root%\ ) rd %%d echo 已处理%%d ) endlocal ) pause若兼容删除1个文件 或 2 个文件 或 3个文件可以改if !cnt! equ 1 or !cnt! equ 2 or !cnt! equ 3考虑递归子文件夹重名处理可使用以下代码echo off chcp 65001 nul setlocal enabledelayedexpansion :: 在这里修改你的目标根目录 set RootPathD:\TestFolder :: call :ScanFolder %RootPath% echo. echo 全部处理完成 pause exit /b :: 递归扫描文件夹子程序 :ScanFolder set CurDir%~1 :: 遍历当前目录下所有子文件夹 for /d %%d in (%CurDir%\*) do ( call :ScanFolder %%d ) :: 统计当前文件夹内文件数量不含子文件夹 set FileCount0 for %%f in (%CurDir%\*.*) do set /a FileCount1 :: 判断1/2/3个文件才处理 if !FileCount! geq 1 if !FileCount! leq 3 ( echo 发现文件夹【%CurDir%】内含 !FileCount! 个文件开始迁移 for %%f in (%CurDir%\*.*) do ( set SrcFile%%f set FileName%%~nf set Ext%%~xf set Dest%RootPath%\!FileName!!Ext! set Seq1 :: 重名则自动追加序号 (1)、(2)… :CheckRename if exist !Dest! ( set Dest%RootPath%\!FileName!(!Seq!)!Ext! set /a Seq1 goto CheckRename ) move !SrcFile! !Dest! nul echo 已移动%%~nx^f → !Dest! ) rd %CurDir% echo ✅ 已删除空文件夹%CurDir% echo. ) exit /b