Bat删除空文件夹

删除空文件夹

批处理递归删除当前及子目录中的空文件夹

将以下代码复制保存至def.bat文件中,直接双击运行即可(不推荐使用)

@echo off
:deldir
setlocal enabledelayedexpansion
for /d %%a in (%1*) do (
set p="%%a\"
set p=!p:.\"=..\"!
rd !p! || ( call :deldir !p! & rd !p! )
)

 

出处:https://www.cnblogs.com/hhddd-1024/p/14275097.html

=======================================================================================

个人使用

版本一

优化:根据上面的思路修改,必须指定目标文件夹参数,调用方式:DelEmptyFolder.bat  "c:\tmp"

@echo off
cls
:deldir
setlocal enabledelayedexpansion
if [%1] equ [] echo 未指定文件夹 & goto :eof
set fp=%1
set fp="%fp%" & set fp=%fp:"=%
if "%fp%" neq "" if "%fp:~-1%" neq "\" set fp=%fp%\
set fp="%fp%"
for /d %%a in (%fp%*) do (
set p="%%a"
set p=!p:.\"=..\"!
rd !p! || ( call :deldir !p! & rd !p!)
)

 

版本二

优化说明:把以下代码保存为DelEmptyFolder.bat

隐藏代码
@echo off
cls&echo;&echo 即将删除【%1】下的空文件夹,退出请关闭!&echo;&pause

:deldir
setlocal enabledelayedexpansion
if [%1] equ [] echo 未指定文件夹 & goto :eof
set fp=%1
set fp="%fp%" & set fp=%fp:"=%
if "%fp%" neq "" if "%fp:~-1%" neq "\" set fp=%fp%\
set fp="%fp%*"
for /d %%a in (%fp%) do (
    set p="%%a"
    rem 以下code防止在当前目录死循环,测试下来也可不用
    set p=!p:.\"=..\"!
    rem 使用rd不能删除非空目录的特性
    rem 使用>nul 2>&1不回显信息,但感觉像程序死了一样,建议回显
::  rd !p! >nul 2>&1 || ( call :deldir !p! & rd !p! >nul 2>&1)
    rd !p! || ( call :deldir !p! & rd !p!)
    echo;
)

::pause

 

 

 

=======================================================================================

 

posted on 2023-11-21 11:04  jack_Meng  阅读(482)  评论(0编辑  收藏  举报

导航