返回列表 发帖

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

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

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

TOP

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

TOP

呵呵,多谢提醒,确实没看下面,又重新给了个代码,写的有点麻烦,见笑了
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do set /p=%%i<nul >>a1.txt
for /f "delims=" %%j in (b.txt) do set /p=%%j<nul >>b1.txt
for /f "delims=" %%k in (c.txt) do set /p=%%k<nul >>c1.txt
set /p c=<a1.txt
set /p a=<b1.txt
set /p b=<c1.txt
echo %c% >d1.txt
echo %a% >>d1.txt
echo %b% >>d1.txt
set n=0
:1
set /a n+=1
(for /f "delims=/ tokens=%n%" %%a in (d1.txt) do echo %%a) >>!n!.txt&&goto 1
pause
del a1.txt&del b1.txt&del c1.txt&del d1.txt
pauseCOPY

[ 本帖最后由 wc726842270 于 2010-11-10 23:37 编辑 ]

TOP

@echo off&setlocal enabledelayedexpansion
set n=1
:r
for /f "tokens=%n% delims=/" %%i in (a.txt b.txt c.txt) do echo %%i>>!n!.txt
set /a n+=1
goto :rCOPY

TOP

本帖最后由 zm900612 于 2011-6-12 15:26 编辑

楼主代码出错是因为tokens值上限为31,也许可以这样:
@echo off&setlocal enabledelayedexpansion
:again
(for %%1 in (a b) do (
for /f "tokens=1-25*delims=\" %%a in (%%1.txt) do (
for %%2 in (
%%a %%b %%c %%d %%e %%f %%g %%h
%%i %%j %%k %%l %%m %%n %%o %%p
%%q %%r %%s %%t %%u %%v %%w %%x %%y %%z
) do (
set /a %%1+=1000001
echo>>$!%%1:~-6!.txt %%2
)
echo;>%%1.txt %%z
)
))>tmp.txt
::每次读取a与b的前25列到以其列数为名的临时文件,并把第26与之后的列输出到原文件中,以便下次分隔
for /f %%a in (a.txt b.txt) do goto :again
::若还存在未分割的列,则继续分割
copy /b $*.txt 合并.txt
::合并临时文件
del /q $*.txt
pauseCOPY

TOP

返回列表