You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用批处理脚本统计同类型文件总大小并输出到文本?

如何用批处理统计目录下同类型文件的总大小并输出到文本?

嘿,作为批处理新手能想到统计同类型文件大小总和,已经超棒啦!完全可以实现你要的功能,我结合你现有的基础给你拆解解决方案,直接能用的代码+详细解释安排上:

完整实现代码

@echo off
setlocal enabledelayedexpansion

:: 设定统计目录(默认当前目录,可改成固定路径如 "C:\Your\Target\Folder")
set "mypath=%cd%"
:: 设定结果输出文件
set "outputfile=FileSizeSummary.txt"

:: 初始化统计变量,按扩展名分组累加大小
for %%F in ("%mypath%\*.*") do (
    :: 提取文件扩展名,去掉前面的点并转为大写(避免mp3/MP3被分开统计)
    set "ext=%%~xF"
    set "ext=!ext:~1!"
    set "ext=!ext:upper!"

    :: 处理无扩展名的文件,统一归类为NO_EXTENSION
    if "!ext!"=="" set "ext=NO_EXTENSION"

    :: 累加当前文件大小到对应类型的变量(%%~zF是文件的字节大小)
    set /a "size_!ext! += %%~zF"
)

:: 将统计结果写入输出文件
echo 文件类型 总大小(bytes) > "%outputfile%"
echo ------------------------ >> "%outputfile%"
:: 遍历所有统计变量,输出类型和对应总大小
for /f "tokens=1,2 delims=_=" %%a in ('set size_') do (
    echo %%a !size_%%a! >> "%outputfile%"
)

echo 统计完成!结果已保存到 %outputfile%
endlocal

关键知识点解释

  1. setlocal enabledelayedexpansion:这是循环中动态读写变量的核心,必须开启!它让我们能用!变量名!的形式在循环里实时读取/修改变量值,否则静态的%变量名%会提前解析失效。
  2. 文件属性提取:
    • %%~xF:提取文件的扩展名(比如.mp3)
    • %%~zF:提取文件的字节大小
  3. 统一扩展名格式:把扩展名转为大写并去掉前面的点,确保.mp3、.MP3、mp3都会被归为同一类统计。
  4. 动态变量累加:用size_!ext!这种动态变量名,自动给每种扩展名创建对应的累加变量,比如size_MP3就专门存所有MP3文件的总大小。

额外小提示

  • 如果需要统计子目录里的文件,把代码里的for %%F in ("%mypath%\*.*")改成for /r "%mypath%" %%F in (*.*)即可。
  • 批处理的整数有上限(最大2147483647字节,约2GB),如果你的文件总大小超过这个值会溢出报错,这种情况可以考虑用PowerShell辅助,但作为新手先掌握这个基础版本完全够用~

内容的提问来源于stack exchange,提问作者LuigiKraken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:02:47