dos batch 批处理合并文本文件的相关行 5

以前发过。没合适的回复。现再发一次。原来的文本文件的格式输出时将一行记录分成了若干行(见图),能否用批处理命令将若干行的同一条记录合并成一条记录方便进一步处理。也就是格式... 以前发过。没合适的回复。现再发一次。原来的文本文件的格式输出时将一行记录分成了若干行(见图),能否用批处理命令
将若干行的同一条记录合并成一条记录方便进一步处理。也就是格式化输出后在另一个目录重建一个同文件名的文本文件。每条记录占一行。

见图如下。(已经将文本文件传到baidu网盘了s/1bnb2XKr)
然后整理成如下效果,也就是将原来分成若干行的相关记录用单一行的形式表示出来

|深圳abcdefghijk有限公司 | 122253 | 9999 | - |3489.53|张某|2012-12-10至2012-12-13|

|深圳1 | 20.00 | 123 |深圳 |18.15 |李某某|2011-04-22|

|新疆联科创有限公司 | 200.00 | 154 |北京 |135 |张某|2012-02-20|

|北京新发集团深圳办事处 | 930 | 18.1 |深圳 |649.14|王某|2011-02-14至2011-0 4-15|

顺祝大家新年好。
展开
 我来答
yyykkkyyyy
2014-02-10 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3266万
展开全部

这种问题本来就该用原输出软件解决的,用批处理不易处理,今天试写了一个,需满足下面假定,测试通过

假定原文是ANSI编码的,那表格线也不知是不是制表线--只需要考列分隔符的(代码中写成普通竖线用代码第4行可改),数据中的空按半角空和Tab空算吧,按第4列为非空白考虑为一新行的“规则”进行合并合并后去掉所有空格,输入输出文件名自己改,不和批处理同位置要写上路径

@echo off
set f1=a.txt
set f2=b.txt
set "f=|"
for /f "delims=:" %%i in ('type "%f1%"^|findstr/n "\[段落5\]"')do set/a n=%%i+3
if not defined n echo 未找到预定段落&pause&exit/b
set "ch=if %n% lss %%a"
for /f "delims=:" %%a in ('type "%f1%"^|findstr/n "\[段落.*\]"'
    )do if not defined m %ch% set m=%%a
if defined m set "ch=%ch% if %m% gtr %%a" 
set "qs=%f%.*%f%.*%f%.*%f%.*[^ ].*%f%.*%f%.*%f%.*%f%"
for /f "delims=:" %%a in (
'more %f1%^|findstr/nrc:"%qs%"')do %ch% set #%%a=y
set "p=!f!!p1: =!!f!!p2: =!!f!!p3: =!!f!!p4: =!!f!!p5: =!!f!!p6: =!!f!!p7: =!!f!"
setlocal enabledelayedexpansion
(for /f "tokens=1-8 delims=:%f%" %%a in (
'more %f1%^|findstr/n "%f%"') do %ch% (
       if defined #%%a (
           if defined p1 echo %p%
           for /L %%i in (1,1,7)do set "p%%i=")
      set "p1=!p1!%%b"
      set "p2=!p2!%%c"
      set "p3=!p3!%%d"
      set "p4=!p4!%%e"
      set "p5=!p5!%%f"
      set "p6=!p6!%%g"
      set "p7=!p7!%%h"
)
echo %p%)>"%f2%"
endlocal
pause
追问
谢谢你的批处理。我的输出是这样的
| =| =| =| =| =| =| =| 你能提供一个你测试成功的输入文件的样本吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依梦琴瑶
高粉答主

2014-02-04 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
for /f "delims=" %%a in ('type "文本"') do echo %%a>目录\%random%.txt

单行内容将会保存到以随机数命名的文件中

追问
请问你这将相关行合并了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nameyu8023
2014-02-06 · TA获得超过528个赞
知道小有建树答主
回答量:640
采纳率:68%
帮助的人:403万
展开全部
批处理办不到,没有切入点。
而且也没有什么规律可言。。。
追问
规律还是有的。城市一栏总是有值的。如果没有值就是将此行的所有栏的值追加到上一栏的相对应栏中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式