曲径通幽论坛

标题: 列出每个目录占用的空间 [打印本页]

作者: easy    时间: 2014-5-14 13:42
标题: 列出每个目录占用的空间
在一个目录下会有子目录,子目录下也可能有子目录, dir 命令的 /s 选项可获取子目录信息大小信息,比如:
[attach]3012[/attach]

如上图所示,命令可以列出某个子目录下所包含的文件,并统计出其数目,以及这些文件总共的大小。需要注意的是,如果右键查看某个文件夹属性,会看到“大小”和“占用空间”的情况,“大小”是实际的大小,但“占用空间”则大于等于“大小”,它表示实际占用的硬盘空间,这根文件系统的存储格式有关(Windows 以 “簇” 为空间来管理,一个簇可以包含2,4,8,16,32,64个扇区,如果实际大小是 3 个扇区,那么占用的空间要以 4 个扇区来计算)。dir /s 给出的就是里头实际大小,而不是这个目录所占用的空间。

下面代码用来列出每个目录占用的实际大小:
  1. @echo off

  2. for /f "tokens=*" %%b in ('dir') do echo "%%b"|find "个文件">nul&&for /f "tokens=3*" %%c in ("%%b") do echo 当前目录 %%c %%d
  3. for /f %%a in ('dir/ad/s/b') do for /f "tokens=*" %%b in ('"dir %%a\"') do echo "%%b"|find "个文件">nul&&for /f "tokens=3*" %%c in ("%%b") do echo %%a %%c %%d

  4. pause
复制代码

token=3* 表示显示从第三列开始到最后的所有列的内容。

%%c, %%d 是使用 tokens 导致的额外变量名的分配,具体请参考《for 循环》。

第一条语句得出的是当前目录的大小。

第二条语句是罗列出所有子目录的大小。





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2