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

Posted jack_孟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求批处理统计文件夹内的所有文件的数量和总大小相关的知识,希望对你有一定的参考价值。

我最近电脑不知道为什么磁盘空间会慢慢的变小,而且过一段时间之后,又会有两三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

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

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

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

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

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

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

参考地址:http://www.bathome.net/thread-37971-1-12.html

以上是关于求批处理统计文件夹内的所有文件的数量和总大小的主要内容,如果未能解决你的问题,请参考以下文章

delphi如何获取文件夹内的MP3文件数量

如何在浏览器中显示剩余下载时间和总文件大小?

Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行空白行不统计在内)

获取 GCS 中文件夹的文件数和总大小的最快方法?

批处理提取文件内的文件名称-dir 错误

Linux查看当前目录下文件夹和文件的大小