批处理bat清理空目录
点击查看代码
@echo on
chcp 65001
setlocal enabledelayedexpansion
:: 设置要检查的目录路径(默认为当前目录)
set "target_dir=%~1"
if "%target_dir%"=="" set "target_dir=%cd%"
:: 显示处理信息
echo 正在扫描空文件夹,请稍候...
echo 目标目录: %target_dir%
echo -------------------------------
:: 初始化计数器
set "empty_count=0"
:: 使用for递归遍历所有子目录
for /f "delims=" %%d in ('dir "%target_dir%" /ad /b /s ^| sort /r') do (
set "folder=%%d"
:: 检查文件夹是否为空(只包含.和..)
dir /a "%%d" | findstr /v "^.$ ^..$" >nul || (
echo 找到空文件夹: %%d
rd "%%d" >nul && (
echo 已删除: %%d
set /a empty_count+=1
) || (
echo 删除失败(可能无权限): %%d
)
)
)
echo -------------------------------
echo 操作完成!共删除 %empty_count% 个空文件夹。
pause
点击查看代码
@echo off
chcp 65001
setlocal enabledelayedexpansion
:: 创建临时文件存储空目录
set "tempfile=%temp%\emptydirs_%random%.txt"
del "%tempfile%" 2>nul
:: 收集所有空目录(包括子目录)
echo Scanning-----------------
for /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do (
pushd "%%d"
:: 检查目录是否为空(包括隐藏文件)
dir /a /b | find "." >nul
if !errorlevel! equ 1 (
echo %%d >> "%tempfile%"
)
popd
)
:: 检查是否找到空目录
if not exist "%tempfile%" (
echo 未发现空目录
exit /b
)
:: 显示空目录列表
echo 发现以下空目录:
type "%tempfile%"
echo.
:: 用户确认
:confirm
set /p "choice=确认删除这些目录?[Y/N] "
if /i "!choice!"=="Y" goto delete
if /i "!choice!"=="N" exit /b
echo 无效输入,请输入Y或N
goto confirm
:: 执行删除
:delete
echo 正在删除空目录...
for /f "usebackq delims=" %%d in ("%tempfile%") do (
rd "%%d" 2>nul && (
echo 成功删除:%%d
) || (
echo 无法删除:%%d(可能包含隐藏文件)
)
)
:: 清理临时文件
del "%tempfile%"
echo 操作完成!
pause
MU5735 R.I.P
浙公网安备 33010602011771号