[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何实现两个txt文档对应列合并?

两个txt文档合并,a.txt数据接着b.txt对应列的下面,并删除a.txt原本的首行标题(因为ab文档首行都是标题,只要保留b的标题即可)

本帖最后由 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
复制代码

TOP

2# zm900612


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

TOP

我以为楼主是要两个文件一行一行交叉放在一起呢。

TOP

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

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

返回列表