中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 05:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:提取文本中的指定字符并生成新的文本 查看 785 回复 6
楼 主 求助:提取文本中的指定字符并生成新的文本 发表于 2008-10-30 21:45 ·  中国 福建 泉州 电信
新手上路
积分 3
发帖 3
注册 2008-10-30 20:55
17年会员
UID 129600
性别 男
状态 离线
请问有多个文本,如何用批处理把文件里的数值提取出来(连表格线也不要)合并成新的文本 .或者合并后删除除数字以外的字符

例如 :现有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
操作:在帖子标题中增加搜索关键字
说明:原标题"求助!!!望高手们给我帮助做批处理"不利于论坛搜索
处罚:因属论坛新人,不予积分处罚
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-10-30 at 23:26 ]
2 发表于 2008-10-30 22:01 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
findstr 过滤掉 ━

然后for 按┃分割……

输出对应块即可。

不要最后一行的话,将结果再findstr过滤掉 总金额
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
lzs1977 +1 2008-10-31 10:48
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2008-10-30 22:58 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
skip=1 findstr 匹配 "┃"
替换掉┃
简单!简单!再简单!
4 发表于 2008-10-31 00:35 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
skip不好用吧?只能最顶去掉……

替换的思想不错
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2008-10-31 00:50 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
应该可以的啊

@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
简单!简单!再简单!
6 发表于 2008-10-31 01:57 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
……制表的 十字符号记错了。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
7 发表于 2008-10-31 10:28 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
有“总金额”:

@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
)
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
lzs1977 +1 2008-10-31 10:47
论坛跳转: