找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26414|回复: 5

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

[复制链接]
发表于 2013-8-22 19:44:41 | 显示全部楼层 |阅读模式
本帖最后由 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都可以。


请大神帮忙,谢谢~~~
发表于 2013-8-22 23:40:24 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
a000000_82 + 1 谢谢

查看全部评分

 楼主| 发表于 2013-8-23 11:41:13 | 显示全部楼层
谢谢terse !!

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

           谢谢~~
发表于 2013-8-23 12:40:10 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
a000000_82 + 1 谢谢

查看全部评分

发表于 2013-8-23 14:32:13 | 显示全部楼层
回复 3# a000000_82
这里冒号前内容是否和文件名不一致 我在这里是取文件名
 楼主| 发表于 2013-8-23 20:05:10 | 显示全部楼层
谢谢terse 、apang !

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

terse的评分明天补上。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:08 , Processed in 0.021626 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表