Nuker 发表于 2012-2-3 12:21:00

批处理问题:如何列出每个子目录下文件的大小总和

目标:
批处理列出子目录下所有文件的大小总和

批处理代码:(存为size_dir.bat)
@ECHO OFF
for /d %%x in (*) do (
        echo ############################################################
        echo 子目录: %%x
        echo ############################################################
        dir /a /s "%%x")

输出结果:
C:\Temp\Batch_Dir>size_dir.bat
############################################################
子目录: 1
############################################################
驱动器 C 中的卷是 SYSTEM
卷的序列号是 xxxx-xxxx

C:\Temp\Batch_Dir\1 的目录

2012-02-0312:02    <DIR>          .
2012-02-0312:02    <DIR>          ..
2008-05-0914:09         456,072 a.dll
2011-07-2116:30             5,313 b.zip
               2 个文件      461,385 字节

   所列文件总数:
               2 个文件      461,385 字节
               2 个目录4,951,236,608 可用字节
############################################################
子目录: 2
############################################################
驱动器 C 中的卷是 SYSTEM
卷的序列号是 xxxx-xxxx

C:\Temp\Batch_Dir\2 的目录

2012-02-0312:12    <DIR>          .
2012-02-0312:12    <DIR>          ..
2012-02-0312:13    <DIR>          3
1997-07-0300:00            51,200 c.exe
1997-07-0300:00             2,650 d.gif
               2 个文件         53,850 字节

C:\Temp\Batch_Dir\2\3 的目录

2012-02-0312:13    <DIR>          .
2012-02-0312:13    <DIR>          ..
2007-02-1616:22            10,454 E.RTF
2007-12-0102:00                42 f.ini
               2 个文件         10,496 字节

   所列文件总数:
               4 个文件         64,346 字节
               5 个目录4,951,236,608 可用字节

问题:
dir /a /s输出只想得到“   所列文件总数:”之后的一行,如下:
############################################################
子目录: 1
############################################################
               2 个文件      461,385 字节
############################################################
子目录: 2
############################################################
               4 个文件         64,346 字节

求教有没有解决方法?

目前,批处理最后一行改为:
        dir /a /s "%%x" | findstr "所列文件总数:$ 字节$")

结果如下:
############################################################
子目录: 1
############################################################
               2 个文件      461,385 字节
   所列文件总数:
               2 个文件      461,385 字节
               2 个目录4,951,236,608 可用字节
############################################################
子目录: 2
############################################################
               2 个文件         53,850 字节
               2 个文件         10,496 字节
   所列文件总数:
               4 个文件         64,346 字节
               5 个目录4,951,236,608 可用字节

怎样改进才能得到需要的输出?

Nuker 发表于 2012-2-3 17:38:40

看起来不好解,只好搬出cygwin了:
$ du -ks `ls`
456   1/
69      2/
44      f.pdf
1       size_dir.bat
就是对中文目录的支持。。。./emotion/em014.gif
页: [1]
查看完整版本: 批处理问题:如何列出每个子目录下文件的大小总和