使用Windows批处理合并两个unicode文本文件的非空行

时间:2013-04-30 15:36:10

标签: text batch-file replace

我们有 2个Unicode文件。其中一个包含另一个文件中缺少的行。像这样:

1. 
2. bbbbbbbbbbbbbbbbb
3. 
4. ddddddddddddddddddddd
5. eeeeeeeeeeeeeeeeeeeeeeee


1. aaaaaaaaaaaaaa
2. 
3. ccccccccccccccccc
4.
5.

我们希望将它们合并到包含所有行的第三个文件中:

1. aaaaaaaaaaaaaa
2. bbbbbbbbbbbbbbbbb
3. ccccccccccccccccc
4. ddddddddddddddddddddd
5. eeeeeeeeeeeeeeeeeeeeeeee

备注:
a,b,c,d,e - 可以是任何文本 行号仅用于说明目的,它们不存在于实际文件中。

我用“批处理文件”标记创建了这个问题,但我对如何实现这一点的任何建议持开放态度。当然最好不要涉及像C ++这样的东西

1 个答案:

答案 0 :(得分:1)

假设没有以冒号开头的行, 首先我们从两个文件中读取每一行到两个数组,包括空行 - 这有一个特殊的黑客,因为正常跳过空白行。 然后只使用相同索引的两个数组连接元素,并输出到results.txt:

setlocal EnableDelayedExpansion

set i=0
for /f "tokens=1* delims=:" %%A in ('type "file1.txt" ^| findstr /n "^"') do (
    set /A i+=1
    set arr1[!i!]=%%B
)

set i=0
for /f "tokens=1* delims=:" %%A in ('type "file2.txt" ^| findstr /n "^"') do (
    set /A i+=1
    set arr2[!i!]=%%B
)

for /L %%i in (1,1,%i%) do echo.!arr1[%%i]!!arr2[%%i]!>> result.txt