现在的位置: 首页 > 综合 > 正文

Windows下显示目录大小及文件个数

2017年12月16日 ⁄ 综合 ⁄ 共 1375字 ⁄ 字号 评论关闭

From:

http://blog.csdn.net/wmnothing/article/details/6590376

 

用批处理实现Windows下子目录大小统计功能

吴旻

泰岩网络工作室

    统计当前目录下各文件夹的大小,在Linux下面比较简单,一个 du -sh * 命令就基本解决问题了。虽然在资源管理器是单击右键,然后选属性可以看到某个文件夹的大小,但当我想知道C:\windows目录下哪个子目录占用了1G以上的空间时,这个方法就显得太笨了,要一个一个点半天才能有结果。

    本文提到的方法,是利用了 dir /s 这个命令,它可以对一个目录进行统计,并在最后给出综合的结果。核心的代码有三部分:

    1、用 dir /ad /b %1 > 1.txt  将指定目录下的子目录保存到 1.txt 文件中,以备后用

    2、使用 for 语句从 1.txt 文件中读出每一个子目录,再用 dir /s 将此子目录的结果保存到 2.txt 文件中。

    3、从 2.txt 文件中读出最后一行,就是想要的那个子目录的统计结果。此处,我再次使用了 for 语句的功能,即逐行读出,但只显示最后一行。

    其它部分代码,是配合整个批处理来使用的。把如下代码保存了一个批处理文件(如:lu.bat),就可以使用了

 

  1. @echo off  
  2.   
  3. IF [%1]==[] GOTO USAGE  
  4.   
  5. if NOT exist "%1" (ECHO "%1" path not exist & GOTO END)  
  6.   
  7. :DIR_PATH  
  8.   
  9. dir /ad /b %1 > 1.txt  
  10.   
  11. setlocal enabledelayedexpansion  
  12.   
  13. for /f "tokens=*" %%i in (1.txt) do (  
  14. rem    echo   
  15.     dir /s  "%1\%%i" |findstr 个文件 > 2.txt || echo. > 2.txt  
  16.   
  17. rem    for /f "eol=0 tokens=1,3 " %%j in (2.txt) do set ll=%%k 字节 %1\%%i  %%j 个文件   
  18.     for /f "eol=0 tokens=1,3 " %%j in (2.txt) do set ll=%%k & set ll=!ll:~0,-9! M %1\%%i  %%j 个文件   
  19.   
  20.     echo  !ll!    
  21. rem    echo.  
  22. )  
  23.   
  24. set total=   
  25. Endlocal  
  26. del 1.txt 2.txt  
  27. GOTO END  
  28.   
  29.   
  30. :USAGE  
  31. echo Usage: %0 dir_path  
  32. GOTO   END   
  33.   
  34. :END  
  35. rem pause  

===========================================================================

忍不住想吐槽下,windows操作系统虽然好用,但是并不适合研发人员,它的命令行(暂且只说dos, 虽然可以用vb, vbscript, 但是本人不太熟悉,写法上也不太适合做编程)实在是太弱了,想想linux下的shell,用起来还是挺方便的!

 

抱歉!评论已关闭.