Board logo

标题: [文本处理] 批处理如何实现两个txt文档对应列合并? [打印本页]

作者: gisjun    时间: 2011-4-3 16:43     标题: 批处理如何实现两个txt文档对应列合并?

两个txt文档合并,a.txt数据接着b.txt对应列的下面,并删除a.txt原本的首行标题(因为ab文档首行都是标题,只要保留b的标题即可)
作者: CrLf    时间: 2011-4-3 17:08

本帖最后由 zm900612 于 2011-4-3 17:14 编辑
  1. @echo off
  2. findstr /n .* b.txt>tmp1
  3. find /n /v "" a.txt|more>tmp2 +2
  4. (for /f "skip=1 tokens=2*delims=]:" %%a in ('fc /lb1000 /n tmp1 tmp2^|sort') do echo;%%b)>合并.txt
  5. del /q tmp?
  6. pause
复制代码

作者: tmplinshi    时间: 2011-4-3 17:22

2# zm900612


不是这样就行吗?
  1. @echo off
  2. >合并.txt (
  3.     type b.txt
  4.     more +1 a.txt
  5. )
复制代码

作者: CrLf    时间: 2011-4-3 17:29

我以为楼主是要两个文件一行一行交叉放在一起呢。
作者: gisjun    时间: 2011-4-3 22:38

很感激各位热心人的帮助! 我的txt文件的名字有规律,如2001001、2001002...一直到2001031,请问能否不用手动改代码中的a和b为具体的文件名称,而直接把一个文件夹中的几十个文件的列合并连接在一起呢?
作者: tmplinshi    时间: 2011-4-3 22:53

本帖最后由 tmplinshi 于 2011-4-3 22:58 编辑

如果要数字最大的文件名作为第一个文件,把代码中的 /o:n 改成 /o:-n
  1. @echo off
  2. set .1=
  3. (for /f "delims=" %%a in (' dir /a:-d /o:n /b *.txt ') do (
  4.     if not defined .1 (
  5.         type "%%a"
  6.         set .1=d
  7.     ) else (
  8.         more +1 "%%a"
  9.     )
  10. )) >_合并.txt
复制代码

作者: CrLf    时间: 2011-4-3 23:06

本帖最后由 zm900612 于 2011-4-3 23:07 编辑

来个土办法,比for快很多,但是合并时,文件顺序不一定符合要求:
  1. @echo off
  2. copy a.txt a.bak
  3. ren a.txt 合并.tmp
  4. more +1 *.txt>>合并.tmp
  5. ren a.bak a.txt
复制代码





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