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

 更新时间:2016年12月03日 12:18:08   作者:bat之家  
这篇文章主要介绍了批处理统计文件夹内的所有文件的数量和总大小的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行(暂停代码)删除,这样当程序执行完后会自动退出,不会一直停留在程序里。

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

相关文章

  • ipc通道入侵相关命令整理

    ipc通道入侵相关命令整理

    我们在入侵的时候难免遇到忘记命令的时候,现在将我所知道的一些命令总结出来提供给各位。通过这些命令可以解决很大一部分新手的问题。首页我们也需要检查下安全,知道黑客是如何使用的。
    2011-02-02
  • bat批处理彻底删除0KB顽固文件或文件夹的方法

    bat批处理彻底删除0KB顽固文件或文件夹的方法

    这篇文章主要介绍了bat批处理彻底删除0KB顽固文件或文件夹的方法,有时会发现一些0KB的隐藏文件,常规方法怎么也删除不了,这时可以使用本文中的脚本试试,需要的朋友可以参考下
    2014-06-06
  • 为cmd设置密码的批处理

    为cmd设置密码的批处理

    大家都知道,微软的溢出漏洞真是一箩筐,而溢出自然就是要拿到CMD权限,但是如果我们的CMD要密码的话……今天就给大家教CMD的防范方法。
    2009-05-05
  • IP动态切换bat脚本

    IP动态切换bat脚本

    因为公司办公室要设置固定IP才行,而家里的IP段和公司是不一样的,家里采用了DHCP机制,这样每次就得改IP设置,很是不方便,就写了这个脚本来动态切换,很流畅的说! WINXP,WIN7测试通过
    2011-10-10
  • 提升网络效率 宽带路由优化与使用技巧

    提升网络效率 宽带路由优化与使用技巧

    提升网络效率 宽带路由优化与使用技巧...
    2006-11-11
  • 通过批处理bat设置系统环境变量的实现代码

    通过批处理bat设置系统环境变量的实现代码

    这篇文章主要介绍了通过批处理bat设置系统环境变量的实现代码,需要的朋友可以参考下
    2014-07-07
  • 批处理将文件侠内的文件名导入表格对应名称中

    批处理将文件侠内的文件名导入表格对应名称中

    这篇文章主要介绍了使用批处理实现将文件侠内的文件名导入表格对应名称中的方法和两个示例,推荐给大家学习下。
    2015-09-09
  • 批处理bat根据星期启动程序

    批处理bat根据星期启动程序

    原来公司里的由于每次开机时启动的程序比较多,所以打算使用批处理程序,这里只列举了部分。在每周一到周五的时候,开机则启动指定的应用程序,如果是周末的两天则不启动任何程序,所以做了这个脚本。你如果需要,根据自己的情况自行修改程序
    2014-07-07
  • 将字符串小写转大写并延时输出的批处理代码

    将字符串小写转大写并延时输出的批处理代码

    有一字符串i like the bathome,because here is the batch of the world. 要求用批处理将字符串的所有字母转成大写并在屏幕上以打字的效果延时输出。
    2010-10-10
  • 批处理读取注册表中run下面的值的代码

    批处理读取注册表中run下面的值的代码

    这个批处理可以获取注册表中run下面的值,其实就是列出系统启用的程序路径,大家可以在这个基础上增加功能了。
    2009-05-05

最新评论