无忧启动论坛

标题: 一个删除当前目录下及其子目录中的空文件夹的批处理 [打印本页]

作者: namejm    时间: 2006-12-28 16:11
标题: 一个删除当前目录下及其子目录中的空文件夹的批处理
  删除空文件夹的批处理:

  1. @echo off
  2. :: 思路:列举所有目录(包括子目录)路径,然后,删除第一个路径最后一节上的文件夹;
  3. ::   如果能删除这个文件夹,则删除上一层文件夹;如果还能删除,则继续上一步……
  4. ::   直到当前目录为止;如果其中某一节不能删除,立即跳出,开始删除下一条路径中
  5. ::   最后一节上的文件夹……如此反复。
  6. ::
  7. :: code by JM 2006-12-25 bbs.cn-dos.net CMD@XP

  8. for /f "delims=" %%i in ('dir /ad /b /s') do call :rd_dir_empty "%%i"
  9. goto :eof


  10. rem ======= 删除空目录 =========
  11. :rd_dir_empty
  12. rd %1 2>nul||goto :eof
  13. set dir_route=%1
  14. for /f "delims=" %%i in (%dir_route%) do (
  15.     set dir_route="%%~dpi"
  16.     for /f "delims=" %%j in ('dir /ad /b "%%~dpi"')do rd "%%~dpi%%j" 2>nul||goto :eof
  17. )
  18. :: 把路径最后的\去掉,以便set route_deepest="%%~dpi"能取到上一层路径
  19. if "%dir_route:~-2,1%"=="" set dir_route="%dir_route:~1,-2%"
  20. if /i not "%cd%"==%dir_route% call :rd_dir_empty %dir_route%
  21. goto :eof
复制代码

作者: xypcmac    时间: 2006-12-29 00:47
大批量操作时:省时省力
作者: 老毛桃    时间: 2006-12-29 10:08
DOS 联盟斑竹的确不一般,学习了!
作者: bagpipe    时间: 2006-12-29 15:28
namejm兄,我觉得以下代码似乎也可以解决删除一个目录及子目录下的空目录的..........

  1. for /f "tokens=*" %a in ('dir /b /ad /s 目录路径^|sort /r') do rd "%a" /q 2>nul
复制代码

作者: namejm    时间: 2006-12-29 16:09
  确实不错,我把简单的事情搞复杂了。
作者: sddylyd    时间: 2007-2-7 10:10
学习了
作者: 13083404404    时间: 2007-3-12 21:38
原帖由 bagpipe 于 2006-12-29 03:28 PM 发表
namejm兄,我觉得以下代码似乎也可以解决删除一个目录及子目录下的空目录的..........

for /f "tokens=*" %a in ('dir /b /ad /s 目录路径^|sort /r') do rd "%a" /q 2>nul

强烈支持!!!!!!!!!
作者: shrkog    时间: 2007-3-13 18:26
谢LZ,收藏学习.
作者: SunTB    时间: 2007-3-16 11:32
又见DOS高手

原来DOS联盟的斑主也来作客
作者: hpebble    时间: 2007-5-27 00:55
原帖由 bagpipe 于 2006-12-29 03:28 PM 发表
namejm兄,我觉得以下代码似乎也可以解决删除一个目录及子目录下的空目录的..........

for /f "tokens=*" %a in ('dir /b /ad /s 目录路径^|sort /r') do rd "%a" /q 2>nul



高手们能否给我们菜鸟解释一下这句呢?
作者: willsion    时间: 2007-7-12 11:20
原帖由 bagpipe 于 2006-12-29 03:28 PM 发表
namejm兄,我觉得以下代码似乎也可以解决删除一个目录及子目录下的空目录的..........

for /f "tokens=*" %a in ('dir /b /ad /s 目录路径^|sort /r') do rd "%a" /q 2>nul


高手。
作者: netwinxp    时间: 2007-7-12 14:51
原帖由 bagpipe 于 2006-12-29 15:28 发表
namejm兄,我觉得以下代码似乎也可以解决删除一个目录及子目录下的空目录的..........

for /f "tokens=*" %a in ('dir /b /ad /s 目录路径^|sort /r') do rd "%a" /q 2>nul

这个好,简洁有力:victory:
作者: lotus516    时间: 2007-8-28 07:31
本贴已删除!

[ 本帖最后由 lotus516 于 2007-8-28 06:14 PM 编辑 ]
作者: lixindiyer    时间: 2007-9-8 19:18
小弟还看不明白。。但是收了。。以后搞懂了,在研究。。
作者: lzys    时间: 2007-9-10 08:41
强,前一阵儿刚才DOS联盟看到,没想到这里也有,支持一下...
作者: lzymbz    时间: 2007-12-31 19:55
好像用不了啊

for /f "tokens=*" %a in ('dir /b /ad /s F:\Program Files\hygl\PIC\^|sort /r') do rd "%a" /q 2>nul


for /f "tokens=*" %a in ('dir /b /ad /s F:\Program Files\hygl\PIC^|sort /r') do rd "%a" /q 2>nul


这样两个都试了
作者: chp_phoenix    时间: 2011-4-2 08:28
感谢
今天刚好用得到了
呵呵




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3