华域联盟 DOS/BAT 文本左右对齐排版的批处理

文本左右对齐排版的批处理

如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

 

 

batman:


复制代码 代码如下:

@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

 

more:


复制代码 代码如下:

@echo off

setlocal enabledelayedexpansion

for /f "tokens=1,2*" %%a in ('type temp.txt') 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

 

523066680:


复制代码 代码如下:

@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 ('type 1.txt') 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

)

pause

原理:例如文本内容为:

ab******1*d

abc*************2********e

用for获得前面的两列

直接组合 则免去了中间的空格:

ab1

abc2

直接加上80个空格

ab1***************************……

abc2***************************……

然后保存前80位。

ab1*********……***

abc2********……***

把空格前移

ab*********……***1

abc********……***2

这样前面的就基本对齐了。后面的第三列 就不用说了…

我觉得应该可以了……至少我自己用不上太通用的,这个代码自己也没有当工具用过
您可能感兴趣的文章:

本文由 华域联盟 原创撰写:华域联盟 » 文本左右对齐排版的批处理

转载请保留出处和原文链接:https://www.cnhackhy.com/16642.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部