实现两个文本同行交替输出的批处理代码

所属分类: 脚本专栏 / DOS/BAT 阅读数: 1002
收藏 0 赞 0 分享
有两个文本如下(实际中并不知道两文本各有多少行):

文本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
更多精彩内容其他人还在看

批处理命令详解之目录跳转:cd

本文给大家介绍的是我们在处理不同路径下文件的时候需要使用的目录跳转命令CD,非常的详细,希望大家看了本文之后可以熟练的使用这个命令。好了,下面我们就来详细介绍下吧。
收藏 0 赞 0 分享

批处理命令教学之tree命令

本文给大家介绍的是本系列文章的第二个命令--tree命令,在cmd中,tree命令的功能是以树形格式罗列文件,非常的实用的一个命令,下面我们就来详细看下它的用法
收藏 0 赞 0 分享

批处理命令教学之if语句

这篇文章主要介绍了Windows批处理命令中IF的使用方法,推荐给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

批处理命令教学之管道符号(|)

本文给大家分享的是批处理命令教学系列中的管道符号(|)的使用方法,非常的详细,推荐给小伙伴们,希望大家能够喜欢。
收藏 0 赞 0 分享

批处理命令教学之复合语句连接符(&、&&和||)

这篇文章主要介绍了批处理命令教学之复合语句连接符(&、&&和||)的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

批处理命令教学之字符串排序(sort)

这篇文章主要介绍了批处理命令教学之字符串排序:sort的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

批处理命令教学之more命令

这篇文章主要介绍了批处理命令中的more命令,十分的详细,包含了more的参数的使用,推荐给小伙伴,有需要的朋友可以参考下。
收藏 0 赞 0 分享

bat/cmd批处理连接SqlServer数据库查询脚本

这篇文章主要介绍了bat/cmd批处理连接SqlServer数据库查询脚本,需要的朋友可以参考下
收藏 0 赞 0 分享

BAT批处理一键生成APK包脚本分享

这篇文章主要介绍了BAT批处理一键生成APK包脚本分享,本文脚本适用于cocos2dx+lua的项目,需要的朋友可以参考下
收藏 0 赞 0 分享

批处理脚本实现提醒下班要打卡

本文给大家分享的是使用批处理脚本实现提醒下班要打卡的方法,一共2个版本,小伙伴们根据自己的情况来选择吧。
收藏 0 赞 0 分享
查看更多