无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 20690|回复: 16
打印 上一主题 下一主题

一个删除当前目录下及其子目录中的空文件夹的批处理

[复制链接]
跳转到指定楼层
1#
发表于 2006-12-28 16:11:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  删除空文件夹的批处理:

  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
复制代码
2#
发表于 2006-12-29 00:47:00 | 只看该作者
大批量操作时:省时省力
回复

使用道具 举报

3#
发表于 2006-12-29 10:08:02 | 只看该作者
DOS 联盟斑竹的确不一般,学习了!
回复

使用道具 举报

4#
发表于 2006-12-29 15:28:28 | 只看该作者
namejm兄,我觉得以下代码似乎也可以解决删除一个目录及子目录下的空目录的..........

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

使用道具 举报

5#
 楼主| 发表于 2006-12-29 16:09:12 | 只看该作者
  确实不错,我把简单的事情搞复杂了。
回复

使用道具 举报

6#
发表于 2007-2-7 10:10:53 | 只看该作者
学习了
回复

使用道具 举报

7#
发表于 2007-3-12 21:38:08 | 只看该作者
原帖由 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

强烈支持!!!!!!!!!
回复

使用道具 举报

8#
发表于 2007-3-13 18:26:24 | 只看该作者
谢LZ,收藏学习.
回复

使用道具 举报

9#
发表于 2007-3-16 11:32:04 | 只看该作者
又见DOS高手

原来DOS联盟的斑主也来作客
回复

使用道具 举报

10#
发表于 2007-5-27 00:55:02 | 只看该作者
原帖由 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



高手们能否给我们菜鸟解释一下这句呢?
回复

使用道具 举报

11#
发表于 2007-7-12 11:20:51 | 只看该作者
原帖由 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


高手。
回复

使用道具 举报

12#
发表于 2007-7-12 14:51:15 | 只看该作者
原帖由 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:
回复

使用道具 举报

13#
发表于 2007-8-28 07:31:00 | 只看该作者
本贴已删除!

[ 本帖最后由 lotus516 于 2007-8-28 06:14 PM 编辑 ]
回复

使用道具 举报

14#
发表于 2007-9-8 19:18:36 | 只看该作者
小弟还看不明白。。但是收了。。以后搞懂了,在研究。。
回复

使用道具 举报

15#
发表于 2007-9-10 08:41:43 | 只看该作者
强,前一阵儿刚才DOS联盟看到,没想到这里也有,支持一下...
回复

使用道具 举报

16#
发表于 2007-12-31 19:55:07 | 只看该作者
好像用不了啊

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


这样两个都试了
回复

使用道具 举报

17#
发表于 2011-4-2 08:28:45 | 只看该作者
感谢
今天刚好用得到了
呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 21:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表