如何编写批处理文件汇总txt内同名游戏物品的数量总和
需求可行性结论
这个批处理统计需求完全可以实现,纯Windows原生批处理能力就能覆盖数百种物品的统计场景,不需要安装任何第三方工具。
核心实现逻辑
- 逐行遍历原始物品记录文件,识别两类行格式:一类是
[数量]x [物品名].的带明确数量的记录,另一类是直接写[物品名].的单物品记录(这类记录默认单条对应数量为1) - 逐行拆分出当前记录的物品名称、对应数量,以物品名称为唯一标识对数量做累加
- 所有记录遍历完成后,按照
[总数量]x [物品名].的格式输出汇总结果,支持直接写入结果文件。
可直接运行的批处理代码
@echo off setlocal enabledelayedexpansion :: 配置文件路径,可根据自己的实际文件名修改 set "INPUT=game_items.txt" set "OUTPUT=item_count_result.txt" :: 清空上一次运行残留的统计变量 for /f "delims==" %%v in ('set count_ 2^>nul') do set "%%v=" :: 逐行处理原始记录 for /f "usebackq delims=" %%line in ("%INPUT%") do ( set "raw=%%line" :: 移除行尾的句号 set "raw=!raw:~0,-1!" set "num=1" set "item_name=!raw!" :: 判断当前行是否带数量前缀 echo !raw! | findstr /r /c:"^[0-9][0-9]*x " >nul if !errorlevel! equ 0 ( :: 拆分出数量和物品名 for /f "tokens=1* delims=x " %%a in ("!raw!") do ( set "num=%%a" set "item_name=%%b" ) ) :: 累加对应物品的数量 if defined count_!item_name! ( set /a "count_!item_name!+=!num!" ) else ( set "count_!item_name!=!num!" ) ) :: 写入统计结果 > "%OUTPUT%" ( for /f "tokens=2,* delims=_=" %%a in ('set count_') do ( echo %%bx %%a. ) ) echo 统计完成,结果已存储到 %OUTPUT% endlocal
使用方法
- 将上述代码复制保存为后缀为
.bat的文件,例如count_items.bat - 将脚本和游戏导出的物品记录txt文件放在同一目录,修改脚本里
INPUT变量的值为你的原始记录文件名,OUTPUT为你想要的结果文件名 - 双击运行bat脚本,同目录下就会生成统计完成的结果文件,格式和需求给出的示例完全一致。
适配提示:如果你的物品名称包含
!、=这类特殊符号,只需要对变量转义部分做小幅调整即可,常规包含空格、中英文的物品名可以直接正常识别统计。
内容的提问来源于stack exchange,提问作者PurplePanic
相关产品推荐
相关产品推荐

