如何借助read、grep、echo等工具在cmd.exe中逐行交错合并文件?
在cmd.exe中实现文件逐行交错合并的方案
要把File1.txt和File2.txt的对应行按Aaaaaaa1 Bbbbbbb1 Aaaaaaa2 Bbbbbbb2 Aaaaaaa3 Bbbbbbb3的格式合并到OUTCOME.txt中,我们可以借助cmd的for循环、延迟变量扩展来实现(注:cmd原生没有read命令,grep的功能可以用findstr替代,但这里用for /f读取文件更直接)。
具体实现脚本
创建一个批处理文件(比如merge.bat),内容如下:
@echo off setlocal enabledelayedexpansion :: 初始化计数器,用于记录文件行数 set "line_count=0" :: 读取File1.txt的每一行,存入数组a for /f "delims=" %%i in (File1.txt) do ( set /a line_count+=1 set "a[!line_count!]=%%i" ) :: 重置计数器,读取File2.txt的每一行,存入数组b set "line_count=0" for /f "delims=" %%i in (File2.txt) do ( set /a line_count+=1 set "b[!line_count!]=%%i" ) :: 拼接对应行的内容,生成输出字符串 set "result=" for /l %%n in (1,1,!line_count!) do ( set "result=!result! !a[%%n]! !b[%%n]!" ) :: 去除开头多余的空格,将结果写入OUTCOME.txt echo!result:~1!> OUTCOME.txt endlocal
脚本说明
@echo off:关闭命令回显,避免执行过程中显示冗余命令。setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环内的变量能实时更新和读取。- 两个
for /f循环分别读取两个文件的每一行,存入对应的数组(a和b),同时记录文件的行数。 - 最后一个
for /l循环遍历行数,将数组中对应位置的内容按A行 B行的顺序拼接,最终去除开头的空格后写入OUTCOME.txt。
使用方法
- 将上述脚本保存为
merge.bat,放在和File1.txt、File2.txt同一目录下。 - 双击运行
merge.bat,或者在cmd中切换到该目录后执行merge.bat即可。
内容的提问来源于stack exchange,提问作者Bich Le The
相关产品推荐
相关产品推荐

