批处理练习题

批处理实现两文本同行交替输出
窗体顶端
窗体底端
有两个文本如下(实际中并不知道两文本各有多少行)
文本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.) do (
    for /f "delims=" %%i in (%%a) do (
        set /a n+=1
        if !n! gtr !num! set "num=!n!"
        set /p=%%i <nul>&
    )
    echo.>&&set "n=0"
)
:lp
set /a n+=1
for /f "tokens=%n%" %%i in () do echo %%i
if %n% neq %num% goto lp
del /&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%个字符
pause>nul&goto :eof
:lp
set "str=%str:~1%"&set /a n+=1
if defined str goto lp
if %n% geq %num% set "num=%n%"&set "_%num%=%~1"
set "n=0"
文本左右对齐排版
1.txt内容如下。复制内容到剪贴板代码:
111111111111111111111 98912 张三
222222222222222222 150020 李四四
333333333333333333333 360000 王五
444444444444444444 2332 赵六六
555555555555555555 222 田七
666666666666666666666 999999 舞吧通过批处理输出为:复制内容到剪贴板代码:

111111111111111111111 98912 张三
222222222222222222 150020 李四四
333333333333333333333 360000 王五
444444444444444444 2332 赵六六
555555555555555555 222 田七
666666666666666666666 999999 舞吧代码要求,不生成任何临时文件。
代码简洁,视思路与代码加分!
------------------------------------------------------------------------------------------
本题只是给出一个简单的文本通过批处理排版,而要求代码的通用,正如batman版主所说,会是一个繁琐的过程,于是就题解题,不必考虑代码的通用。
 
@echo off
Setlocal Enabledelayedexpansion
set n=0
for /f "tokens=1,2*" %%i in (1.txt) do (
      set "ke=%%i %%j"
      set m=0
      call :1             
)
for /f "tokens=1,2*" %%i in (1.txt) do (
      set "ke1=%%i %%j"
      set ke2=%%i           
      set m1=0
      call :2
      echo !ke2! %%j %%k           
)
pause
goto :eof
:1
  if not "!ke:~%m%,1!"=="" set /a m+=1&goto 1
  if %m% gtr %n% set n=%m%
  goto :eof 
:2
  if not "!ke1:~%m1%,1!"=="" set /a m1+=1&goto 2
  set /a dd=n-m1
  for /l %%a in (1,1,%dd%) do set "ke2=!ke2! "   
  goto :eof
@echo off&setlocal enabledelayedexpansion
set "kong=          "
for /f "delims=" %%a in (1.txt) do (
    for %%i in (%%a) do (
        set "str=%%i"&set /a n+=1
        if !n! equ 2 (
          set "str=%kong%!str!"
          set /p=!str:~-10! <nul
          ) else (
          set "str=!str!%kong%"
          set /p=!str:~,20! <nul
    ))
    set "n=0"&echo.
)
pause>nul
aaaaaaaaaaaaaaaaaa 
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2*" %%a in ('') do (
  set "mo=%%a"&set "niu=%%b"&set "m=0"&set "n=0"&set "very="
  call :ming0 %%a %%b %%c
)
echo.&pause&exit
:ming0
if not "!mo:~%m%,1!"=="" (set "momo=!mo:~%m%,1!"&set /a "m+=1"&goto :ming0)
:ming1
if not "!niu:~%n%,1!"=="" (set "niuniu=!niu:~%n%,1!"&set /a "n+=1"&goto :ming1)
set /a "ming=30-%m%-%n%"
for /l %%i in (1 1 %ming%) do set "very=!very! "
echo %1 %very% %2 %3
 
@echo off
mode con cols=100 lines=20
setlocal enabledelayedexpansion
for /l %%a in (1,1,80) do set kong= !kong!
for /f "eol= tokens=1,2,3" %%a in ('') do (
set lie1-2=%%a%%b%kong%
set lie1-2=!lie1-2:~0,80!
set lie1-2=%%a!lie1-2:%%a%%b=!%%b
echo,!lie1-2!  %%c

本文发布于:2024-09-23 01:36:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/360816.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   文本   批处理   内容   复制   输出   要求   剪贴板
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议