Board logo

标题: [文本处理] 批处理:怎么把竖排文本转换成横排文本? [打印本页]

作者: marya    时间: 2014-3-25 03:16     标题: 批处理:怎么把竖排文本转换成横排文本?

本帖最后由 marya 于 2014-3-25 11:57 编辑

有个 1.txt 的文本,每行3段文本,例如:

校长室   192.168.18.3   LDYZa3
教导处   192.168.18.4   LDYZa4
总务处   192.168.18.5   LDYZa5

原有代码显示效果(后面2段不用显示):

1.校长室
2.教导处
3.总务处

原代码参考:
  1. set n=0
  2. for /f "tokens=1,2" %%a in (1.txt) do (
  3. set /a n+=1
  4. echo   !n!·%%a
  5. )
复制代码
现在想转化成横排,中间空格分割,并且每排3个数字,超过3个,自动换行到下行显示,效果如下:

1.校长室   2.教导处   3.总务处

这帖似差不多,但本人只略懂皮毛,请高手指点一下,先谢谢!
http://bbs.bathome.net/redirect.php?tid=18971&goto=lastpost
作者: apang    时间: 2014-3-25 10:07

本帖最后由 apang 于 2014-3-25 10:42 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f %%a in (1.txt) do (
  3.     set /a n+=1,m=n%%3
  4.     set /p=!n!.%%a <nul
  5.     if "!m!"=="0" echo,
  6. )
  7. pause
复制代码

作者: marya    时间: 2014-3-25 12:05

回复 2# apang

字间隔太密,能否分开一点?横竖分开点易看最好!谢谢!
作者: xxpinqz    时间: 2014-3-25 12:50

本帖最后由 xxpinqz 于 2014-3-25 12:53 编辑
  1. set /p=!n!.%%a <nul
复制代码
<前面的空格就是字段间隔,要宽点就多加几个空格
  1. set /p=!n!.%%a         <nul
复制代码
  1. if "!m!"=="0" echo,
复制代码
echo,是行间隔,如果要空一行多加一个&echo,
  1. if "!m!"=="0" echo,&echo,
复制代码

作者: marya    时间: 2014-3-25 16:01

回复 4# xxpinqz

左边距——红箭头处离边太近
作者: apang    时间: 2014-3-25 16:37

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f %%a in (1.txt) do (
  3.     set /a n+=1,m=n%%3
  4.     set "s=!s!  !n!.%%a"
  5.     if "!m!"=="0" echo,!s!&echo,&set "s="
  6. )
  7. if defined s echo,!s!
  8. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2