[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

原创,  请管理员移至原创区(目前本人权限不足)

清理空文件夹,节省资源
  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 编辑 ]

回复 38# wrjx


    表示该文件目录的短路径,详见 for /?:
另外,FOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:

     %~I          - 删除任何引号("),扩展 %I
     %~fI        - 将 %I 扩展到一个完全合格的路径名
     %~dI        - 仅将 %I 扩展到一个驱动器号
     %~pI        - 仅将 %I 扩展到一个路径
     %~nI        - 仅将 %I 扩展到一个文件名
     %~xI        - 仅将 %I 扩展到一个文件扩展名
     %~sI        - 扩展的路径只含有短名
     %~aI        - 将 %I 扩展到文件的文件属性
     %~tI        - 将 %I 扩展到文件的日期/时间
     %~zI        - 将 %I 扩展到文件的大小
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个完全合格的名称。如果环境变量
                   未被定义,或者没有找到文件,此组合键会扩展
                   空字符串

可以组合修饰符来得到多重结果:

     %~dpI       - 仅将 %I 扩展到一个驱动器号和路径
     %~nxI       - 仅将 %I 扩展到一个文件名和扩展名
     %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
     %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个驱动器号和路径。
     %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
比较易读,而且避免与不分大小写的组合键混淆。

TOP

回复 37# CrLf


    请问一下,%%~sdpd这个变量是什么意思?

TOP

32# zm900612
for %%d in (源文件夹) do (
    xcopy /s %%d %%~sdpd\$temp\
    rd /s /q %%d
    ren %%~sdpd\$temp "%%~nxd"
)
qzwqzw 发表于 2011-6-9 23:09



真是太妙了,为什么我就没想到,差距啊...

TOP

ding.......

TOP

32# zm900612
for %%d in (源文件夹) do (
    xcopy /s %%d %%~sdpd\$temp\
    rd /s /q %%d
    ren %%~sdpd\$temp "%%~nxd"
)
1

评分人数

    • zm900612: 绝妙!但是请把代码用code框起来...PB -4 技术 + 2
天的白色影子

TOP

33# Hello123World


/s开关的特性是不复制空文件夹...

TOP

来一种另类的:xcopy /s 源文件夹 \临时\
rd /s /q 源文件夹
xcopy /s \临时 源文件夹\适合文件少而体积小,并且空文件夹多的情况
zm900612 发表于 2011-6-9 18:16


没看懂你的意图,先复制到临时,删除源文件夹,又复制临时到源文件夹——这不是什么都没做吗?

TOP

来一种另类的:
  1. xcopy /s 源文件夹 \临时\
  2. rd /s /q 源文件夹
  3. xcopy /s \临时 源文件夹\
复制代码
适合文件少而体积小,并且空文件夹多的情况

TOP

25# batman
/q 参数是画蛇添足,没/s ,/q压根就没有存在的意义。

TOP

dir /ad /b /s这里要加 |sort /r  否则就会在 文件夹1里面有文件夹2而且都是没文件的情况下,只删了文件夹2,文件夹1是空的,但没删。

TOP

楼主的代码已经很好了,不过还是加一句啊
就是当文件夹保存过图片的情况,会有Thumbs.db文件,建议加一句来删除Thumbs.db后再判断。
目的,学习批处理

TOP

回复 27楼 的帖子

呵呵  主要你那个背景有个wing哦

TOP

头像漂亮果然有好处,感谢回复,完毕。

TOP

回复 24楼 的帖子

...........   哪有忽视你啊~~

嘿嘿  何况你的图片这么PL

  你说的那个a/b/c的问题,  因为只是用dir的.来判断,所以 只是以你运行时的情况为准

  当然,你运行一次就删除了c,再一次就是b  递推。

  你想一次搞定  建议你判断sum的值  当sum不是0就再次执行,等于0就退出....

TOP

返回列表