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

[文本处理] [已解决]求BAT能给当前所有文件夹的文件名前添加文件夹大小

比如我的G盘根目录有4个文件夹

分别在G盘

G:\11
G:\22
G:\33
G:\44


其中11文件夹大小是500G

22文件夹大小是500M

33文件夹是500K

求在它们的文件夹名字前加上文件夹大小

变成G:\500G11或者G:\500GB11

等类似结果。。。


空白文件夹最好可以是0B或者能够写在文件夹名字前就可以了。。拜托了

本帖最后由 xp3000 于 2021-5-20 22:33 编辑

文件夹以前可能存放过文件,造成以下情况
可能存在默认生成文件:desktop.ini
可能存在图片缩略图缓存文件:Thumbs.db
两个都是隐藏的
  1. @echo off
  2. for /f "tokens=*" %%i in ('dir/s/b/ad^|sort /r') do (
  3.     attrib -a -s -r -h "%%i\desktop.ini">nul 2>nul&del /f /s /q "%%i\desktop.ini">nul 2>nul
  4.     attrib -a -s -r -h "%%i\Thumbs.db">nul 2>nul & del /f /s /q "%%i\Thumbs.db">nul 2>nul
  5.     rd "%%i"
  6. )
  7. pause
复制代码
1

评分人数

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. for /f "delims=" %%a in ('dir /ad /b /s G:\22ywc\manh22') do (
  4.     set n=0  
  5.     for /f "delims=" %%a in ('dir /b /a-d "%%~fa"') do (
  6.         set n=1
  7.     )
  8.     if !n!==0 echo rd /s /q "%%~fa"
  9. )"
复制代码
先测试,如果正确  删除 echo rd 中的 echo
1

评分人数

TOP

回复 3# newswan


    感谢你的回复。。实测没有效果。。试了好几种方法都不行

TOP

回复 2# xp3000


    感谢回复,,实测没有效果




提示信息

目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
请按任意键继续. . .

TOP

回复 2# xp3000


    用途是去除空白文件夹。。。但我发现那个不够保险。。。所以求得是在文件夹面前添加文件夹的大小

TOP

你要删除的目录里,是不是有隐藏文件,或者没有权限,先找到问题

TOP

也就是说,文件夹看着是空的,显示目录不是空的,目录里面有隐藏的文件,至少你得在文件夹把,查看→文件夹选项,里面勾选显示隐藏文件夹选项,看看文件夹里面有什么隐藏的

TOP

回复 7# newswan


    并不是这样。。。实测还是没办法的。。。。。打开属性看,,,就是0字节。。。目录里面还有空白目录。。。所以不能检测。。。。所以目前求得是给文件夹添加文件夹大小。。这样我可以手动删除

TOP

回复 8# xp3000


    并不是这样。。。实测还是没办法的。。。。。打开属性看,,,就是0字节。。。目录里面还有空白目录。。。所以不能检测。。。。所以目前求得是给文件夹添加文件夹大小。。这样我可以手动删除

截了图的,,,发现上传不了。。。总之。。。。目前主要用途虽然是删除空白文件夹。。。但是只能求其他bat来实现稳妥的删除

TOP

写过类似的工具,由于隐藏文件和权限问题,空文件夹不一定显示正确
选中项目右键打开后再操作文件排序工具

TOP

我新建一个文件夹,将其他文件夹由系统生成的配置文件,一个或两个,4k,16k或1k大小,复制到新文件夹后重新勾选隐藏,属性上占用空间0,明明有两个文件,大小15k

TOP

回复 11# went


    当前保留4位小数,如果需要更精确
    右键编辑,ctrf+f查找 {0:f4} MB 修改

TOP

gnu 命令
du
tree -s -d

TOP

test.bat
ansi编码
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4. echo %%i
  5. for /f "tokens=3" %%a in ('dir /s "%%~i" ^| findstr "个文件"') do set "size=%%a"
  6. set "size=!size:,=!"
  7. set "str_size="
  8. call :_fun "!size!/1024"
  9. if "!b!"=="0" (
  10. REM 字节
  11. set "str_size=!size!B"
  12. ) else (
  13. set "k=!b!"
  14. call :_fun "!b!/1024"
  15. if "!b!"=="0" (
  16. REM KB
  17. set "str_size=!k!KB"
  18. ) else (
  19. set "k=!b!"
  20. call :_fun "!b!/1024"
  21. if "!b!"=="0" (
  22. REM MB
  23. set "str_size=!k!MB"
  24. ) else (
  25. REM GB
  26. set "str_size=!b!GB"
  27. )
  28. )
  29. )
  30. echo !str_size!
  31. echo %%i --^> !str_size!-%%i
  32. rename "%%i" "!str_size!-%%i"
  33. echo -----------
  34. )
  35. pause&exit
  36. :_calc
  37. set "_calc=mshta "javascript:var fso=new ActiveXObject("Scripting.FileSystemObject");fso.GetStandardStream(1).WriteLine(%~1);window.close()""
  38. for /f "delims=" %%i in ('%_calc%') do set "%~2=%%i"
  39. goto :eof
  40. :_split
  41. set "b=%~n1"
  42. set "c=%~x1"
  43. set "c=!c:~1!"
  44. goto :eof
  45. :_fun
  46. call :_calc "%~1" "a"
  47. call :_split "!a!"
  48. goto :eof
复制代码
1

评分人数

TOP

返回列表