路漫漫其修远兮,吾将上下而求索

导航

批处理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

posted on 2025-12-19 18:48  爱在西元间  阅读(0)  评论(0)    收藏  举报