找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25282|回复: 5

[文本处理] 批处理如何合并文本文件?

[复制链接]
发表于 2010-11-9 23:39:33 | 显示全部楼层 |阅读模式
有三个文本文件a.txt、b.txt、c.txt(三个文件都超过20M)
文件a.txt内容为:1111/2222/3333/4444......
文件b.txt内容为:aaaa/bbbb/cccc/dddd
文件c.txt内容为:AAAA/BBBB/CCCC/DDDD
我想弄个批处理,来加工这三个文件,加工后生成若干个新文件,如:1.txt、2.txt、3.txt等等
1.txt内容为:
1111
aaaa
AAAA2.txt内容为
2222
bbbb
BBBB
依此类推我自己写了个批处理,也实现了效果,但是只能循环31次,不知是什么原因?我的代码如下:
@echo off
set /a n=0
:loop
set /a n+=1
FOR /F "tokens=%n% delims=/" %%i in (a.txt,b.txt,c.txt) do @echo %%i >> %n%.txt
goto :loop
发表于 2010-11-10 20:54:40 | 显示全部楼层
试一下能否满足吧.不用那么复杂
  1. copy /a a.txt+b.txt
复制代码
发表于 2010-11-10 22:26:53 | 显示全部楼层
2楼没有弄清1楼的要求吧
发表于 2010-11-10 23:18:44 | 显示全部楼层
呵呵,多谢提醒,确实没看下面,又重新给了个代码,写的有点麻烦,见笑了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do set /p=%%i<nul >>a1.txt
  3. for /f "delims=" %%j in (b.txt) do set /p=%%j<nul >>b1.txt
  4. for /f "delims=" %%k in (c.txt) do set /p=%%k<nul >>c1.txt
  5. set /p c=<a1.txt
  6. set /p a=<b1.txt
  7. set /p b=<c1.txt
  8. echo %c% >d1.txt
  9. echo %a% >>d1.txt
  10. echo %b% >>d1.txt
  11. set n=0
  12. :1
  13. set /a n+=1
  14. (for /f "delims=/ tokens=%n%" %%a in (d1.txt) do echo %%a) >>!n!.txt&&goto 1
  15. pause
  16. del a1.txt&del b1.txt&del c1.txt&del d1.txt
  17. pause
复制代码

[ 本帖最后由 wc726842270 于 2010-11-10 23:37 编辑 ]
发表于 2011-6-12 08:17:55 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. :r
  4. for /f "tokens=%n% delims=/" %%i in (a.txt b.txt c.txt) do echo %%i>>!n!.txt
  5. set /a n+=1
  6. goto :r
复制代码
发表于 2011-6-12 15:20:29 | 显示全部楼层
本帖最后由 zm900612 于 2011-6-12 15:26 编辑

楼主代码出错是因为tokens值上限为31,也许可以这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. :again
  3. (for %%1 in (a b) do (
  4.         for /f "tokens=1-25*delims=" %%a in (%%1.txt) do (
  5.                 for %%2 in (
  6.                         %%a %%b %%c %%d %%e %%f %%g %%h
  7.                         %%i %%j %%k %%l %%m %%n %%o %%p
  8.                         %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z
  9.                 ) do (
  10.                         set /a %%1+=1000001
  11.                         echo>>$!%%1:~-6!.txt %%2
  12.                 )
  13.                 echo;>%%1.txt %%z
  14.         )
  15. ))>tmp.txt
  16. ::每次读取a与b的前25列到以其列数为名的临时文件,并把第26与之后的列输出到原文件中,以便下次分隔
  17. for /f %%a in (a.txt b.txt) do goto :again
  18. ::若还存在未分割的列,则继续分割
  19. copy /b $*.txt 合并.txt
  20. ::合并临时文件
  21. del /q $*.txt
  22. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:22 , Processed in 0.026829 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表