返回

批处理文件汇总txt文本第一列相同的行最后数字的方法

电脑技巧

利用批处理文件汇总文本数据:一行内特定列数字相加

使用批处理文件处理文本数据

批处理文件是用于在 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,以便为下一组数据计算总和。
  • set total=!total!+%%i: 将当前行的最后一列的数字添加到 total 变量中。
  • echo %prev_col1% !total!: 输出最后一行的第一列内容和最后一列数字的总和。

使用批处理脚本

  1. 将要处理的文本文件放在与批处理脚本相同的目录中。
  2. 双击运行批处理脚本。
  3. 批处理脚本将输出结果到控制台窗口。

代码示例

假设有一个名为 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

常见问题解答

  1. 文本文件中的分隔符是什么?
    默认情况下,脚本使用逗号 (,) 作为分隔符。如果你的文本文件使用其他分隔符,则需要修改脚本中的 delims= 选项。
  2. 文本文件中的字段数是多少?
    默认情况下,脚本假设文本文件中有 9 个字段。如果你的文本文件中的字段数不同,则需要修改脚本中的 tokens= 选项。
  3. 最后一列数字必须是整数吗?
    是的,最后一列数字必须是整数,否则脚本会出错。
  4. 如何将脚本修改为处理不同的文本文件?
    只需修改脚本中的 file= 行以指定要处理的文本文件。
  5. 如何将脚本修改为将结果输出到文件中?
    可以使用重定向运算符 (>) 将结果输出到文件中。例如,sum_txt_data.bat > results.txt 将结果输出到 results.txt 文件中。