Board logo

标题: 求助:提取文本中的指定字符并生成新的文本 [打印本页]

作者: lzs1977     时间: 2008-10-30 21:45    标题: 求助:提取文本中的指定字符并生成新的文本
请问有多个文本,如何用批处理把文件里的数值提取出来(连表格线也不要)合并成新的文本 .或者合并后删除除数字以外的字符 例如 :现有A.TXT 上帐成功明细清单 种类代码:1010 单位代码:500141 单位名称:华龙 批次号:08102300344 账务主机入帐日期:20081023 ┏━━━┳━━━━━━┳━━━━━━━┳━━━┳━━━━━┓ ┃ 序号 ┃ 用 户 号 ┃ 帐 号 ┃ 户名 ┃上帐金额 ┃ ┣━━━╋━━━━━━╋━━━━━━━╋━━━╋━━━━━┫ ┃ 1 ┃06775 ┃603970001203 ┃叶龙 ┃ 23.09 ┃ ┃ 2 ┃12196 ┃603970001200 ┃陈力 ┃ 13.85 ┃ ┃总金额┃ ┃ ┃ ┃ 36.94 ┃ ┗━━━┻━━━━━━┻━━━━━━━┻━━━┻━━━━━┛ B.TXT 上帐成功明细清单 种类代码:1010 单位代码:500149 单位名称:中国珍申 批次号:081023001 账务主机入帐日期:20081029 ┏━━━┳━━━━━━┳━━━━━━━┳━━━┳━━━━━┓ ┃ 序号 ┃ 用 户 号 ┃ 帐 号 ┃ 户名 ┃上帐金额 ┃ ┣━━━╋━━━━━━╋━━━━━━━╋━━━╋━━━━━┫ ┃ 1 ┃06779 ┃603970001209 ┃叶里 ┃ 25.80 ┃ ┃ 2 ┃12198 ┃603970001277 ┃陈新 ┃ 52.15 ┃ ┃总金额┃ ┃ ┃ ┃ 77.95 ┃ ┗━━━┻━━━━━━┻━━━━━━━┻━━━┻━━━━━┛ 希望生成的合并文本c.txt效果如下: 1 06775 603970001203 叶龙 23.09 2 12196 603970001200 陈力 13.85 总金额 36.94 1 06779 603970001209 叶里 25.80 2 12198 603970001277 陈新 52.15 总金额 77.95 或者还可以生成没有总金额这一行的 不知道高手们能不能做出这两种批处理文件呢 小弟菜鸟在这万分感谢! ───────────────── 版务记录 ───────────────── 执行:HAT 操作:[2008-10-30]在帖子标题中增加搜索关键字 说明:原标题"求助!!!望高手们给我帮助做批处理"不利于论坛搜索 处罚:因属论坛新人,不予积分处罚 提示:建议阅读以下帖子 {1415}提问的智慧 {7326}论坛新手必读,所有人的基本行为准则 {22703}请不要做浮躁的人 {32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧 {32825}本版严厉整顿烂帖 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2008-10-30 at 23:26 ]

作者: slore     时间: 2008-10-30 22:01
findstr 过滤掉 ━ 然后for 按┃分割…… 输出对应块即可。 不要最后一行的话,将结果再findstr过滤掉 总金额

作者: terse     时间: 2008-10-30 22:58
skip=1 findstr 匹配 "┃" 替换掉┃

作者: slore     时间: 2008-10-31 00:35
skip不好用吧?只能最顶去掉…… 替换的思想不错

作者: terse     时间: 2008-10-31 00:50
应该可以的啊
@echo off&setlocal enabledelayedexpansion&color
for %%i in (*.txt) do (
echo.>>c.txt
for /f "skip=1 delims=" %%i in ('findstr /i "┃" "%%i"') do (
set str=%%i
set str=!str:┃=!
>>c.txt echo !str!
))
pause

作者: slore     时间: 2008-10-31 01:57
……制表的 十字符号记错了。

作者: tireless     时间: 2008-10-31 10:28
有“总金额”:
@echo off
for %%t in ("C:\test\*.txt") do (
  for /f "skip=9 delims=┃ eol=┗ tokens=1-5 usebackq" %%a in ("%%t") do (
    echo %%a %%b %%c %%d %%e>>total.txt
    if %%a==总金额 echo.>>total.txt
  )
)
无“总金额”:
@echo off
for %%t in ("C:\test\*.txt") do (
  for /f "skip=9 delims=┃ eol=┗ tokens=1-5 usebackq" %%a in ("%%t") do (
    if %%a==总金额 (echo.>>-total.txt) else echo %%a %%b %%c %%d %%e>>-total.txt
  )
)