当前位置 博文首页 > 实现两个文本同行交替输出的批处理代码

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

    作者:admin 时间:2021-02-19 12:05

    有两个文本如下(实际中并不知道两文本各有多少行):

    文本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
    js
下一篇:没有了