Board logo

标题: [文本处理] [已解决]BAT如何将文本逐行数据相加,的数达到额定值行提取另存? [打印本页]

作者: a000000_82    时间: 2013-8-22 19:44     标题: [已解决]BAT如何将文本逐行数据相加,的数达到额定值行提取另存?

本帖最后由 a000000_82 于 2013-8-23 20:06 编辑

麻烦各位大神帮忙写个批。



条件与内容如下:


“第三季检工号汇总”文件夹内有文本数量0001.txt~9xxx.txt

如0001.txt和9xxx.txt内容为:

(0001.txt)文本内容为:

0001.txt:001,003,001,
0001.txt:005,
0001.txt:005,005,060,
0001.txt:009,000,
0001.txt:003,003,003,003,033


(9xxx.txt)文本内容为:

9xxx.txt:008,080,
9xxx.txt:012,xxx,xxx,xxx,xxx.xxx,xxx,xxx,xxx,
9xxx.txt:030,xxx,xxx,xxx,000,015,
9xxx.txt:002,075,


每个文本行数1~90不固定,数据列数不固定,单个数值为000,~090,数值不固定。


批处理实现效果为:

额定值设定可调。

设定为45时,也就是单行数据相加后的数为45的行提取出来存入:检工额定\45.txt

如45.txt内容为:

0001.txt:003,003,003,003,033
0999.txt:011,021,013,
9xxx.txt:030,xxx,xxx,xxx,000,015,




批的要求说明:

bat、sed、gawk都可以。


请大神帮忙,谢谢~~~
作者: terse    时间: 2013-8-22 23:40

  1. @echo off&setlocal enabledelayedexpansion
  2. set files=检工额定
  3. pushd "D:\第三季检工号汇总\"
  4. md "%files%" 2>nul
  5. set m=45
  6. (for %%i in (*.txt) do (
  7. for /f "tokens=2 delims=:" %%j in (%%i) do (
  8. for /f "tokens=* delims=,0" %%k in ("%%j") do set str=%%k
  9. for /L %%k in (1,1,2) do set "str=!str:,0=,!"
  10. set /a "n=!str:,=+!+0"
  11. if !n! equ %m% echo %%i:%%j
  12. )
  13. ))>"%files%\%m%.txt"
  14. popd
  15. pause
复制代码

作者: a000000_82    时间: 2013-8-23 11:41

谢谢terse !!

    经测用冒号前的(1.txt:000,)没能原样显示,另请帮忙把该批改成能同时提取4~5个指定值。

           谢谢~~
作者: apang    时间: 2013-8-23 12:40

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (5,45,80,30,160) do set ".%%a=1"
  3. md "D:\检工额定\" 2>nul
  4. pushd "D:\第三季检工号汇总\"
  5. for %%i in (*.txt) do (
  6.     for /f "tokens=1,2 delims=:" %%a in (%%i) do (
  7.         set "str=,%%b,"
  8.         for /l %%c in (1,1,2) do set "str=!str:,0=,!"
  9.         set /a "n=0!str:,=+!0"
  10.         if defined .!n! >>"D:\检工额定\!n!.txt" echo,%%a:%%b
  11.     )
  12. )
  13. pause
复制代码

作者: terse    时间: 2013-8-23 14:32

回复 3# a000000_82
这里冒号前内容是否和文件名不一致 我在这里是取文件名
作者: a000000_82    时间: 2013-8-23 20:05

谢谢terse 、apang !

    两个批都很好用,裹心感谢两位达人~~~~。

terse的评分明天补上。




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