批处理练习

本文介绍了批处理编程中的一些实战技巧,包括如何实现两文本同行交替输出、查找字符数最多的文本行、文本左右对齐排版以及解决约瑟夫环问题。代码要求不生成临时文件,高效且简洁。此外,还提供了批处理重命名特殊文件名的方法。
摘要由CSDN通过智能技术生成

批处理实现两文本同行交替输出

窗体顶端

窗体底端

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

文本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%个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值