返回
批处理文件汇总txt文本第一列相同的行最后数字的方法
电脑技巧
2023-12-22 15:16:18
利用批处理文件汇总文本数据:一行内特定列数字相加
使用批处理文件处理文本数据
批处理文件是用于在 Windows 操作系统中执行命令的脚本文件。它们可以帮助你自动化各种任务,例如文件操作、文本处理和系统配置。本文将探讨如何使用批处理脚本汇总文本数据,具体来说,我们将相加文本文件第一列中相同行的最后一列中的数字。
创建批处理脚本
首先,创建一个新的文本文件并将其另存为一个扩展名为 .bat
的批处理文件,例如 sum_txt_data.bat
。然后,将以下代码复制并粘贴到该文件中:
@echo off
setlocal enabledelayedexpansion
:: 指定文本文件路径
set file="data.txt"
if not exist %file% (
echo 文件不存在!
exit /b
)
:: 初始化变量
set prev_col1=
set total=0
:: 遍历文本文件每一行
for /f "delims=, tokens=1-9" %%a in (%file%) do (
:: 如果第一列与上一行不同,则输出上一行的结果并重置变量
if "%%a" neq "!prev_col1!" (
if defined prev_col1 (
echo %%prev_col1 !total!
)
set prev_col1=%%a
set total=0
)
:: 将最后一列的数字添加到total变量中
set total=!total!+%%i
)
:: 输出最后一行的结果
echo %prev_col1% !total!
批处理脚本详解
- @echo off: 关闭命令回显,使脚本运行时不显示命令本身。
- setlocal enabledelayedexpansion: 启用延迟环境变量扩展,以便在脚本中使用
!
符号来引用环境变量。 - set file="data.txt": 指定要处理的文本文件。
- if not exist %file% ( ... ): 检查文件是否存在,如果不存在,则输出错误信息并退出脚本。
- set prev_col1=: 初始化
prev_col1
变量,用于存储上一行的第一列内容。 - set total=0: 初始化
total
变量,用于存储每一组数据的总和。 - for /f "delims=, tokens=1-9" %%a in (%file%) do ( ... ): 使用
for
循环遍历文本文件的每一行,并将每一行划分为 9 个字段,其中%%a
表示第一列的内容,%%i
表示最后一列的内容。 - if "%%a" neq "!prev_col1!" ( ... ): 检查第一列的内容是否与上一行不同,如果不同,则执行以下操作:
- if defined prev_col1 ( ... ): 检查
prev_col1
变量是否已定义,如果已定义,则表示这是第一行数据,不需要输出结果。 - echo %%prev_col1 !total!: 输出上一行的第一列内容和最后一列数字的总和。
- set prev_col1=%%a: 将当前行的第一列内容存储在
prev_col1
变量中。 - set total=0: 重置
total
变量为 0,以便为下一组数据计算总和。
- if defined prev_col1 ( ... ): 检查
- set total=!total!+%%i: 将当前行的最后一列的数字添加到
total
变量中。 - echo %prev_col1% !total!: 输出最后一行的第一列内容和最后一列数字的总和。
使用批处理脚本
- 将要处理的文本文件放在与批处理脚本相同的目录中。
- 双击运行批处理脚本。
- 批处理脚本将输出结果到控制台窗口。
代码示例
假设有一个名为 data.txt
的文本文件,其内容如下:
apple,1,2,3,4,5,6,7,8
banana,9,10,11,12,13,14,15,16
cherry,17,18,19,20,21,22,23,24
运行批处理脚本 sum_txt_data.bat
将产生以下输出:
apple 36
banana 80
cherry 120
常见问题解答
- 文本文件中的分隔符是什么?
默认情况下,脚本使用逗号 (,
) 作为分隔符。如果你的文本文件使用其他分隔符,则需要修改脚本中的delims=
选项。 - 文本文件中的字段数是多少?
默认情况下,脚本假设文本文件中有 9 个字段。如果你的文本文件中的字段数不同,则需要修改脚本中的tokens=
选项。 - 最后一列数字必须是整数吗?
是的,最后一列数字必须是整数,否则脚本会出错。 - 如何将脚本修改为处理不同的文本文件?
只需修改脚本中的file=
行以指定要处理的文本文件。 - 如何将脚本修改为将结果输出到文件中?
可以使用重定向运算符 (>
) 将结果输出到文件中。例如,sum_txt_data.bat > results.txt
将结果输出到results.txt
文件中。