找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 144590|回复: 38

[文件操作] [分享]批处理清理空文件夹(与网上的不同)

[复制链接]
发表于 2009-11-30 17:50:28 | 显示全部楼层 |阅读模式
原创,  请管理员移至原创区(目前本人权限不足)

清理空文件夹,节省资源
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. mode con cols=80 lines=25
  4. title 空文件夹清理 -
  5. color 3F
  6. echo ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  7. echo ☆                                                                          ☆
  8. echo ★                       空文件夹清理工具                                   ★
  9. echo ☆                                                                          ☆
  10. echo ★                                         BY :  九影蓝翼(bluewing009)   ★
  11. echo ☆                                                                          ☆
  12. echo ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  13. set /a sum=0
  14. echo.
  15. echo.
  16. echo 说明此工具会删除当前所在目录及其子目录下的空文件夹,以节省空间。
  17. echo.
  18. echo       当前工作目录为: %cd%
  19. echo.
  20. echo                                                   任意键   开始删除空文件夹
  21. pause>nul
  22. echo -----------------------------------------------------------------------------
  23. for /f "delims=" %%i in ('dir /ad /b /s') do (
  24. dir /b "%%i"|findstr .>nul||rd "%%i"&&echo 成功删除空文件夹:%%i&&set /a sum=sum+1
  25. )
  26. echo -----------------------------------------------------------------------------
  27. echo      共删除%cd%目录下 空文件夹个数:%sum%
  28. pause>nul
  29. set sum=
  30. exit
复制代码
修正:可以删除带空格的文件夹。

[ 本帖最后由 bluewing009 于 2009-12-4 09:32 编辑 ]
发表于 2009-11-30 22:13:53 | 显示全部楼层
直接贴源代码更加方便他人查看吧?
 楼主| 发表于 2009-12-1 10:28:40 | 显示全部楼层

回复 2楼 的帖子

考虑到这是成品,可以直接使用。

  就直接发附件了。
发表于 2009-12-1 11:05:26 | 显示全部楼层

回复 3楼 的帖子

直接发代码不是更好吗?一来不影响“直接使用”,二来方便他人“直接查看”。你觉得呢?
发表于 2009-12-1 12:08:34 | 显示全部楼层
下下来看看先,谢谢楼主
发表于 2009-12-1 13:40:00 | 显示全部楼层
for /f "delims=" %%i in ('dir /ad /b /s') do (
dir /b "%%i"|findstr .>nul||rd %%i&&echo 成功删除空文件夹:%%i&&set /a sum=sum+1
)
echo -----------------------------------------------------------------------------
echo      共删除%cd%目录下 空文件夹个数:%sum%
pause>nul

亲爱的朋友-----你发布你的作品前--有没有 仔细测试呢
上面引用的是你的 核心 代码---------
经测试 :
未起用变量延迟  set /a sum=sum+1
路径含有空格未加引号导致根本无法删除文件夹,找不到路径 rd %%i

[ 本帖最后由 vsbat 于 2009-12-1 19:09 编辑 ]
 楼主| 发表于 2009-12-1 13:49:21 | 显示全部楼层

回复 6楼 的帖子

延迟在开头就声明了。至于空格文件夹的问题,是我考虑不周全,需要在rd命令加""。   现在是手机登陆,稍后上传修改。或者请自行添加""。
 楼主| 发表于 2009-12-1 13:51:43 | 显示全部楼层

回复 6楼 的帖子

感谢6楼对错误的指正。
发表于 2009-12-1 13:57:46 | 显示全部楼层
声明是声明了--------
可是----得用啊
set /a sum=!sum!+1
 楼主| 发表于 2009-12-1 17:35:44 | 显示全部楼层

回复 9楼 的帖子

请看&&部分  

不是很明白你的意思...
发表于 2009-12-1 18:47:36 | 显示全部楼层

回复 9楼 的帖子

有点不明白vbbat了,我的印象中你的水平很不错。
set /a sum=sum+1
怎么连这种用法不需要开启变量延迟都忘了?
发表于 2009-12-1 19:04:17 | 显示全部楼层
aaaa--------------
天那----
抱歉 楼主----------我想错了---以为 set /a s=s+1
还要 !s!--
我很菜----呵呵---
发表于 2009-12-1 21:10:22 | 显示全部楼层
有两处疑问,望解答:
1、为何set命令给变量赋值的时候要加上/a开关?
2、你开启了变量延迟扩展之后,对于文件夹名称中含有感叹号的情况是怎样考虑的?
 楼主| 发表于 2009-12-1 22:03:22 | 显示全部楼层

回复 13楼 的帖子

因为是 数字 所以用/a哦
发表于 2009-12-1 22:12:59 | 显示全部楼层
前面set sum=0后面set sum=不行吗?是数字就要加/a吗?
set /a sum=sum+1跟set /a sum+=1比有什么好处?

dir /b "%%i"|findstr .>nul||rd "%%i"&&echo 成功删除空文件夹 跟
rd "%%i" 2>nul &&echo 成功删除空文件夹
相比有什么好处?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:50 , Processed in 0.011032 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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