手机
当前位置:查字典教程网 >脚本专栏 >DOS/BAT >实现两个文本同行交替输出的批处理代码
实现两个文本同行交替输出的批处理代码
摘要:有两个文本如下(实际中并不知道两文本各有多少行):文本1.txtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

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

文本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

【实现两个文本同行交替输出的批处理代码】相关文章:

将文件夹变为磁盘的批处理

可以实现系统自动关机的批处理

在机上创建一个用户的批处理

字符串拼接的批处理

字符串截取功能批处理

可以实现反复重启的批处理

查找偶数行内容的批处理

每天按时 重启服务器 的批处理

强制与他人QQ聊天的批处理Dos

网管专用自动更改IP机器名工作组的批处理

精品推荐
分类导航