[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]求助批处理把文本按特定格式显示

本帖最后由 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=输入名称:"
复制代码
刚刚代码贴少了点,求大大们帮忙~~~
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

如果行首第一个字符为[,则输出整行,否则以,为分隔符,截取每行的第一段并set /p叠加输出
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 2# zaqmlp


    大哥,我也这种想的,可代码呢?

TOP

求大神,在线=~~~~~~

TOP

  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
复制代码
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 5# yhcfsr


    大哥,你这个只能这种
[A]
111 222 [B] 333 444 ......
不是我想要的~谢谢你的解答

TOP

回复 6# xxpinqz


    谢谢大神~~你的代码帮我大忙了~~完全符合我的要求~~感谢~~

TOP

回复 6# xxpinqz


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

TOP

  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
复制代码
1

评分人数

    • pcrock: 乐于助人,谢谢大神~~技术 + 1
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

本帖最后由 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 的方法做菜单。我现在能做到的是输入关键字或词才执行对应的菜单,因有中文在里面,输入时比较没效率,所以~~~~~希望大 神能再帮帮我~~~

TOP

  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
复制代码
问题一次性提出。。。。
1

评分人数

    • pcrock: 感谢给帖子标题标注[已解决]字样,谢谢大神技术 + 1
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表