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

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

有三个文本文件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

试一下能否满足吧.不用那么复杂
  1. copy /a a.txt+b.txt
复制代码

TOP

2楼没有弄清1楼的要求吧

TOP

呵呵,多谢提醒,确实没看下面,又重新给了个代码,写的有点麻烦,见笑了
  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 编辑 ]

TOP

  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
复制代码

TOP

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

TOP

返回列表