如何实现两个文本同行交替输出的批处理-创新互联

这篇文章给大家分享的是有关如何实现两个文本同行交替输出的批处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

目前累计服务客户近1000家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站设计、网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联公司始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

有两个文本如下(实际中并不知道两文本各有多少行):
文本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 代码尽量简洁
目的:
的目的在于共同提高!
答案:


代码如下:

@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 >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://scyanting.com/article/iiesj.html