• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    批处理统计文件夹内的所有文件的数量和总大小的bat

    我最近电脑不知道为什么磁盘空间会慢慢的变小,而且过一段时间之后,又会有两三GB的空间被释放出来,使用我想监控下,看看是那个文件夹下产生的文件来占用我的存储空间,我想按层监视,最终找出原因。

    从网上找个命令行显示指定文件夹目录的大小的批处理程序,但是发现并不太尽人意,总感觉不是很适合我的使用;

    第一个程序,可以显示某个文件夹下的文件大小,但是我想按层显示,却不能满足我的要求,程序如下:

    @echo off
    echo.
    set /p dirPath=please input folder path:
    set /a s=1024*1024*1024
    for /f "tokens=3 delims= " %%i in ('dir /s /a /-c "%dirPath%" ^|findstr 个文件') do (set z=%%i)
    echo.
    echo 文件夹:%dirPath%
    set d=bit
    if %z% gtr 1024 set /a "z>>=10"set d=KB
    if %z% gtr 1024 set /a "z>>=10"set d=MB
    if %z% gtr 1024 set /a "z>>=10"set d=GB
    
    echo 的总大小是:%z% %d%echo.
    if %z% LSS %s% echo 该文件夹内容小于1G
    pause>nul

    第二个程序的,可以显示当前文件夹下的层级目录,但没有循环每一次下文件夹的大小,程序如下:

    @echo off
    setlocal enabledelayedexpansion
    (for /d %%a in (C:\KuGou\*) do (
      set/a n=z=0
      pushd "%%a"
      for %%b in (*.*.) do (
        set/a n+=1,z+=%%~zb
      )
      set/a "z>>=20"
      popd
      echo;%%a [!n!个!z!M]
    ))>统计结果.txt
    pause

    通过上面的两个程序,我整合了一下,打算合成一个程序,应该就和我需要的程序差不多了,说干就干,下面看看我的程序:

    @echo off
    setlocal enabledelayedexpansion
    echo.
    set /p dirPath=please input folder path:
    echo %dirPath%
    echo.
    for /d %%a in (%dirPath%\*) do (
      set/a zz=0
      for /f "tokens=3 delims= " %%t in ('dir /s /a /-c "%%a" ^|findstr 个文件') do (
      set zz=%%t
      )  
    set d=bit
    if !zz! GEQ 1024 set /a "z1=!zz!>>10"set d=KB
    if !z1! GEQ 1024 set /a "z2=!z1!>>10"set d=KB
    if !z2! GEQ 1024 set /a "z3=!z2!>>10"set d=KB
    echo 文件夹:%%a ,大小是:!z3!GB = !z2!MB = !z1!!d!
    )
    for /f "tokens=1-4 delims= " %%i in ('dir /a /-c %dirPath% ^|findstr 个文件') do (
      set/a ss=%%k
      set/a ss>>=10,d=bit
      
      if !ss! GEQ 1024 set /a "s1=!ss!>>10"set d=KB
      if !s1! GEQ 1024 set /a "s2=!s1!>>10"set d=KB
      if !s2! GEQ 1024 set /a "s3=!s2!>>10"set d=KB
      echo 在"%dirPath%"根目录下有 %%i %%j ,总共大小为:!s3!GB = !s2!MB = !s1!!d!
      )
    
    pause

    代码四:实现执行后统计文件夹内包含所有文件及所有子文件夹下的文件,以及子文件夹下的子文件夹下的文件,以及子文件夹下的子文件夹下的子文件夹下的文件

    @echo off
    setlocal enabledelayedexpansion
    (for /f “delims=” %%i in ('dir /s/b/l/ad') do (
    cd "%%~fsi"
    set/a a=0,n=0
    for /f "delims=" %%a in ('dir /b/l/aa') do (
    set/a a+=1,n+=%%~za 2>nul
    )
    set/a n/=1048576
    echo.%%~fi : !a! : !n!MB
    )) >统计结果.txt
    pause

    MB不支持小数位,文件过小会显示为零,可以删除

    set/a n/=1048576

    并删除MB改为字节。

    或者使用KB,修改为

    set/a n/=1024
    echo.%%~fi : !a! : !n!KB

    代码5:用纯批处理在数字计算上受限制,这个问题用批处理结合awk倒是简单:
    需拖拽执行

    #  cls  (for /f "delims=" %%a in ('dir/a-d/b/s %1') do @echo %%~za) | gawk -v path=%~n1 -f %0 >con  pause  exit
    {sum+=$0}
    END{
    	printf "%s文件夹总大小为: \n%.2f byte\n%.2f MB\n%.2f GB\n",path,sum,sum/1024/1024,sum/1024/1024/1024
    }

    gawk 4.1.0 下载地址:https://www.jb51.net/softs/515570.html

    程序也不多解释,大家一看就明白,只是把别人的东西组合在一起,调用方法:

    一:双击执行,根据提示输入您需要建设的文件夹路径。

    二:开始--运行--cmd,然后找到存放bat文件的地方,直接输入bat文件名就可以执行。

    三:也可以直接输出到文件,例如:C:\&;f3.bat>111.txt回车之后就只能看到光标一闪一闪的,这时你直接输入文件夹路径就可以了。

      说明:如果采用输出到文件的形式,最后把代码最后的pause行(暂停代码)删除,这样当程序执行完后会自动退出,不会一直停留在程序里。

    以上两个程序的出自于“批处理之家”,地址在下面方便以后追踪以及查阅

    您可能感兴趣的文章:
    • 批处理(bat)获取指定目录下的所有文件列表
    • BAT 批处理脚本教程(详细篇脚本之家补充)
    • Windows下使用批处理文件.bat删除旧文件
    • 利用bat批处理程序通过DOS命令行删除所有的空文件夹的方法
    • bat命令批处理判断32位还是64位系统的多种方法
    • bat 批处理 for 命令快速入门
    • 修改Windows Server 2008 R2 的3389远程端口的Bat批处理代码
    • 批处理文件bat脚本实现代码自动提交和项目部署
    上一篇:DOS批处理中%~dp0等扩充变量语法详解
    下一篇:BAT与HTML混合编程写法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    批处理统计文件夹内的所有文件的数量和总大小的bat 批处理,统计,文件夹,内,