批处理实现两文本同行交替输出
有两个文本如下(实际中并不知道两文本各有多少行):
文本1.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ccccccccccccccccccccccccccccccccccccccc
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
ggggggggggggggggggggggggggggggggggggggg
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
文本2.txt
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
要求用批处理输出如下(两文本交替输出):
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
ccccccccccccccccccccccccccccccccccccccc
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
ggggggggggggggggggggggggggggggggggggggg
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
要求:
1 尽量不生成临时文件
2 代码要高效
3 代码尽量简洁
目的:
唯一的目的在于共同提高!
@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
@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
批处理查找字符数最多的文本行
有文本a.txt如下:
aaaaaaa aaaa bbbbbb ccccccccccc dddd
aa aaaaaaa bbbbbbbb cccccccccc ddddddddddddd eeeeeee
aaaaaaaaaaaa bbbbbbbbbbb cccccccccccccccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa
aaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb
aaaaaaaaa ccccccccc bbbbbbbbbbbbb ddddddddddddddddd
通过批处理查找出文本中字符数(不含空格)最多的行并输出,很明显就是复制内容到剪贴板代码:
aaaaaaaaa ccccccccc bbbbbbbbbbbbb ddddddddddddddddd
要求:
1 不生成临时文件
2 代码简洁,高效,通用性好
3 加分仍以思路为重
@echo off
Setlocal Enabledelayedexpansion
set n=0
for /f "delims=" %%i in (a.txt) do (
set "ke=%%i"
set ke1=!ke: =!
set m=0
call :1
)
echo %wang%
pause
goto :eof
:1
if not "!ke1:~%m%,1!"=="" set /a m+=1&goto 1
if %m% gtr %n% set n=%m%&set wang=%ke%
goto :eof
@echo off
set num=0
for /f "delims=" %%i in (a.txt) do set "str=%%i"&call,set "str=%%str: =%%"&call :lp "%%i"
call,echo %%_%num%%% %num%个字符