Board logo

标题: [文本处理] [已解决]求助批处理把文本按特定格式显示 [打印本页]

作者: pcrock    时间: 2018-7-20 14:34     标题: [已解决]求助批处理把文本按特定格式显示

本帖最后由 pcrock 于 2018-7-22 11:14 编辑

有a.txt,内容类似如:
[A]
111,jhsfdkghfsjifg
222,xjdk**isofgkjj
[B]
333,jskldfhgiohsnmh
444,njkxnfjkghiunfr
..........
我想读取a.txt并屏显为
[A]
111 222
[B]
333 444
何解??

我只能实现这种:
111 222 333 444
代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a "n=0"
  3. for /f "tokens=1,2 delims=,$" %%a in ('more a.txt^|findstr /i ","') do (
  4. set /a n+=1&set /p =%%a<nul &if !n!==6 (echo.&set n=))
  5. echo.
  6. set /p "u=输入名称:"
复制代码
刚刚代码贴少了点,求大大们帮忙~~~
作者: zaqmlp    时间: 2018-7-20 14:51

如果行首第一个字符为[,则输出整行,否则以,为分隔符,截取每行的第一段并set /p叠加输出
作者: pcrock    时间: 2018-7-20 14:58

回复 2# zaqmlp


    大哥,我也这种想的,可代码呢?
作者: pcrock    时间: 2018-7-20 15:14

求大神,在线=~~~~~~
作者: xxpinqz    时间: 2018-7-20 20:37

  1. @echo off
  2. (for /f "tokens=1* delims=," %%a in (a.txt) do (
  3.     if "%%b"=="" (
  4.     if not defined . (
  5.     echo,%%a
  6.     set .=.
  7.     )else (
  8.         echo,
  9.         echo,%%a
  10.     )
  11.     ) else set /p "=%%a "  
  12. ))<nul
  13. pause
复制代码

作者: pcrock    时间: 2018-7-20 22:04

回复 5# yhcfsr


    大哥,你这个只能这种
[A]
111 222 [B] 333 444 ......
不是我想要的~谢谢你的解答
作者: pcrock    时间: 2018-7-20 22:05

回复 6# xxpinqz


    谢谢大神~~你的代码帮我大忙了~~完全符合我的要求~~感谢~~
作者: pcrock    时间: 2018-7-20 22:13

回复 6# xxpinqz


    大神,能不能在这个基础上再加上一个条件,如下
[A]                   :这一行显示不变
111 222 333 444 555 666                :这一行显示6个后换行
777 888 999 123 321 235
。。。
[B]         :同上
111 222 。。。
。。。
作者: xxpinqz    时间: 2018-7-20 23:39

  1. @echo off
  2. (for /f "tokens=1* delims=," %%a in (a.txt) do (
  3.     if "%%b"=="" (
  4.     set n=-1
  5.     if not defined . (
  6.         echo,%%a
  7.         set .=.
  8.     ) else (
  9.         echo,
  10.         echo,%%a
  11.     )
  12.     ) else set/an+=1,1/(6-n^)||(echo,&set n=0)&set /p "=%%a "  
  13. ))<nul 2>nul
  14. pause
复制代码

作者: pcrock    时间: 2018-7-21 10:04

本帖最后由 pcrock 于 2018-7-21 10:18 编辑

回复 10# xxpinqz


    大神,能不能再帮个忙?在每个前面加个序号,如:
[A]
001.111   002.222   003.333   004.444   005.555   006.666
..................
..................

例如每次输入002就r执行222对应的操作,其实之前就是做了个菜单,但又不想用goto XXX 的方法做菜单。我现在能做到的是输入关键字或词才执行对应的菜单,因有中文在里面,输入时比较没效率,所以~~~~~希望大 神能再帮帮我~~~
作者: xxpinqz    时间: 2018-7-22 01:50

  1. @echo off&setlocal enabledelayedexpansion&set m=1000
  2. (for /f "tokens=1* delims=," %%a in (b.txt) do (
  3.     if "%%b"=="" (
  4.     set n=-1
  5.     if not defined . (
  6.     echo,%%a
  7.     set .=.
  8.     ) else (
  9.         echo,
  10.         echo,%%a
  11.     )
  12.     ) else set/an+=1,m+=1,1/(6-n^)||(echo,&set n=0)&set /p "=!m:~-3!.%%a "  
  13. ))<nul 2>nul
  14. pause
复制代码
问题一次性提出。。。。




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