Board logo

标题: 求个文本合并的批处理或VBS [打印本页]

作者: 77720666     时间: 2009-4-7 06:29    标题: 求个文本合并的批处理或VBS
ab两个文本~
将b文本每行内容插在a文本对应行的后面

如:
a文本内容
123
456
789
...

b文本内容
abc
def
hij
...

处理后
123----abc
456----def
789----hij


想了很久不知道该怎么写

作者: netbenton     时间: 2009-4-7 07:31
@echo off
set n=0
for /f "tokens=*" %%a in (a.txt) do (
set/a n+=1
call set #%n%#=%%a
)
set n=0
for /f "tokens=*" %%a in (b.txt) do (
set/a n+=1
call echo.%%#%n%#%%----%%a
)

pause

作者: moniuming     时间: 2009-4-7 07:46
如果两个文本的行数一样,可以参考下面的代码:
@echo off
for /f "delims=" %%a in (a.txt) do (
call :lp "%%a"
)
pause&goto :eof
:lp
for /f "%skp% delims=" %%b in (b.txt) do (
set /a n+=1
call set skp=skip=%%n%%
echo.%~1---%%b
goto :eof
)

作者: moniuming     时间: 2009-4-7 07:52
2楼的应该是这样吧:
@echo off
set n=0
for /f "tokens=*" %%a in (a.txt) do (
set/a n+=1
call set #%%n%%#=%%a
)
set n=0
for /f "tokens=*" %%a in (b.txt) do (
set/a n+=1
call call echo.%%%%#%%n%%#%%%%----%%a
)
pause

作者: s11ss     时间: 2009-4-7 08:08

'cscript -nologo a.vbs
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oFileA = oFso.OpenTextFile("a.txt")
Set oFileB = oFso.OpenTextFile("b.txt")
While Not (oFileA.AtEndOfLine Or oFileB.AtEndOfLine)
WSH.Echo oFileA.ReadLine & "----" & oFileB.ReadLine
Wend

作者: netbenton     时间: 2009-4-7 09:06
4楼正解,
偶是漏掉了一层call
见笑了。^_^

作者: everest79     时间: 2009-4-7 10:37
无差错行对应实例

@echo off
for /f "skip=4 tokens=1,2 delims=" %%i in ('find /v /n "" ?.txt^|sort') do (
If Not defined textnewline%%i (
set/p=%%j---<nul
set textnewline%%i=%%i
) else (
echo %%j
)
)>>output.txt


作者: s11ss     时间: 2009-4-7 11:11
不行的,如[1]的下一行可能是[10]

作者: everest79     时间: 2009-4-7 11:33
这个没考虑,哈哈

作者: 77720666     时间: 2009-4-8 06:05
谢谢各位了~
看来最简单还是用VBS

作者: 77720666     时间: 2009-4-8 06:07
Originally posted by everest79 at 2009-4-7 10:37 AM:
无差错行对应实例

@echo off
for /f "skip=4 tokens=1,2 delims=" %%i in ('find /v /n "" ?.txt^|sort') do (
If Not defined textnewline%%i (
set/p=%%j---< ...

对不起,您最近 24 小时评分数超过 5 点 限制,请返回。



不好意思了