[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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或者能够写在文件夹名字前就可以了。。拜托了

回复 17# went


    我不懂怎么快速。。。但是我有类似bat

这个bat是列出当前文件夹所有文件夹里面有多少文件并且写在文件夹前面。。。速度极度快。。。


@Powershell -v 3 -nolog "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]:efault))").Invoke()}" & pause & exit
$dirItems = Get-ChildItem -Path './' -Directory;
foreach($item in $dirItems)
{
    $files = $item.GetFiles();
    $newName = "{0:d7}" -f ($files.Count);
    $newName += $item.Name;
    Rename-Item -Path $item -NewName $newName;
}







目前求得这个bat我很少很少使用。。所以没事。。。也很少有可能需要遇到几千几万个这样做的文件夹


不管怎样,起码你的这个bat已经很好了,感谢

TOP

本帖最后由 went 于 2021-5-21 01:11 编辑

回复 16# 8532200


    子文件夹层级数过多,dir /s 命令输出就要很久,耗时就变长
    而且bat并没有处理大数字和浮点数的能力

TOP

回复 15# went


    感谢回复。
实测成功
不过速度有点慢的太恐怖了。。。。。少量文件夹还可以

很少遇到这么长代码的BAT。。真的非常非常非常感谢。。。这个bat我其实使用频率比较低。。所以之前用的是删除空文件夹那个bat

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

gnu 命令
du
tree -s -d

TOP

回复 11# went


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

TOP

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

TOP

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

TOP

回复 8# xp3000


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

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

TOP

回复 7# newswan


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

TOP

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

TOP

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

TOP

回复 2# xp3000


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

TOP

回复 2# xp3000


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




提示信息

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

TOP

返回列表