实现两个文本同行交替输出的批处理代码
作者 佚名
来源 批处理
浏览
发布时间 2013-07-09
有两个文本如下(实际中并不知道两文本各有多少行): 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccccccccccccccc eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ggggggggggggggggggggggggggggggggggggggg wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 文本2.txt hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj 要求用批处理输出如下(两文本交替输出): aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh ccccccccccccccccccccccccccccccccccccccc iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj ggggggggggggggggggggggggggggggggggggggg wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 要求: 1 尽量不生成临时文件 2 代码要高效 3 代码尽量简洁 目的: 唯一的目的在于共同提高! 答案: more: 复制代码 代码如下: @echo off setlocal enabledelayedexpansion for /f "delims=" %%a in (''type 11.txt'') do ( set /a m+=1 set "home!m!=%%a" ) for /f "delims=" %%b in (''type 12.txt'') do ( set /a n+=1 set "bat!n!=%%b" ) if %m% gtr %n% ( for /l %%c in (1 1 %m%) do ( if not "!home%%c!"=="" echo !home%%c! if not "!bat%%c!"=="" echo !bat%%c! ) ) else ( for /l %%d in (1 1 %n%) do ( if not "!home%%d!"=="" echo !home%%d! if not "!bat%%d!"=="" echo !bat%%d! ) ) pause batman: 复制代码 代码如下: @echo off for /f "delims=" %%i in (1.txt) do set /a n+=1&call,set "_%%n%%=%%i" for /f "delims=" %%i in (2.txt) do set /a m+=1&call,set ".%%m%%=%%i" if %n% gtr %m% (set "num=%n%") else (set "num=%m%") for /l %%i in (1,1,%num%) do ( if defined _%%i call,echo %%_%%i%% if defined .%%i call,echo %%.%%i%% ) pause>nul pusofalse: 复制代码 代码如下: @echo off&setlocal enabledelayedexpansion&set n=-1 for /f "delims=" %%a in (1.txt) do ( set/a n+=1 set flag= call :lp %%a if not defined flag echo %%a ) :lp if "%1" equ "" set/a n+=1 set m=skip=%n% if "%m%" equ "skip=0" set "m=" for /f "%m% delims=" %%a in (2.txt) do if "%1" neq "" (echo %1&echo %%a&set flag=a&goto :eof) else echo %%a if "%1" equ "" pause batman: 复制代码 代码如下: @echo off set "n=-1"&set "flag=a" :begin set /a n+=1 if %n% equ 0 (set "m=") else (set "m=skip=%n%") for /f "%m% delims=" %%i in (1.txt) do echo %%i&if defined flag goto next set no=a :next for /f "%m% delims=" %%i in (2.txt) do echo %%i&goto begin if not defined no set "flag="&goto begin pause>nul batman: 复制代码 代码如下: @echo off&setlocal enabledelayedexpansion set "num=0" for %%a in (1.txt 2.txt) do ( for /f "delims=" %%i in (%%a) do ( set /a n+=1 if !n! gtr !num! set "num=!n!" set /p=%%i <nul>>temp.txt ) echo.>>temp.txt&set "n=0" ) :lp set /a n+=1 for /f "tokens=%n%" %%i in (temp.txt) do echo %%i if %n% neq %num% goto lp del /q temp.txt&pause>nul |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: net use 命令集合详解()下一篇: 文本左右对齐排版的批处理
关于实现两个文本同行交替输出的批处理代码的所有评论