Board logo

标题: [文本处理] [已解决]批处理怎样把文本中每一行指定列的数字分别相加并输出到原文档? [打印本页]

作者: zrf0123    时间: 2015-11-25 00:23     标题: [已解决]批处理怎样把文本中每一行指定列的数字分别相加并输出到原文档?

本帖最后由 pcl_test 于 2016-11-16 19:22 编辑

一个txt文件有多行,需要 每行的第32 34 36 38 40  42 个数字分别相加(如 第一行的第31个数字 与第2行、第三行...的第31个数字相加),并把结果输出到文档第一行。
求哪位大侠帮忙,万分感谢!

每行内容都是这样的  192.168.1.11 2015/11/23 21:34  1 2 1 7 0 4
字符是一样多的
作者: 依山居    时间: 2015-11-25 00:30

文件类型不知道,数据长度不知道,不是打飞机太难,是飞机都不见怎么打?
作者: 依山居    时间: 2015-11-25 00:30

传文件上网盘。
作者: zrf0123    时间: 2015-11-25 00:47

回复 2# 依山居


    已修改 多谢关注!
作者: terse    时间: 2015-11-25 01:25

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set str=%%i
  4.     set "str=!str:~-12!"
  5.     set "str=!str: =!"
  6.     for /l %%j in (0,1,5) do set /a "$%%j+=!str:~%%j,1!"
  7. )
  8. for /l %%i in (0,1,5) do set "s=!s! !$%%i!"
  9. >b.txt echo!s!
  10. pause
复制代码

作者: 依山居    时间: 2015-11-25 05:09

文件按列切分后,可以看成一个二维数组~
作者: DAIC    时间: 2015-11-25 09:56

  1. @echo off
  2. gawk "{a+=$4;b+=$5;c+=$6;d+=$7;e+=$8;f+=$9}END{print a,b,c,d,e,f}" 1.txt > 2.txt
  3. type 1.txt >> 2.txt
  4. move /y 2.txt 1.txt
复制代码

作者: DAIC    时间: 2015-11-25 10:00

  1. @echo off
  2. for /f "tokens=4-9" %%i in ('type "1.txt"') do (
  3.     set /a a+=%%i
  4.     set /a b+=%%j
  5.     set /a c+=%%k
  6.     set /a d+=%%l
  7.     set /a e+=%%m
  8.     set /a f+=%%n
  9. )
  10. > 2.txt echo %a% %b% %c% %d% %e% %f%
  11. >> 2.txt type 1.txt
  12. move /y 2.txt 1.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2