找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28446|回复: 10

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

[复制链接]
发表于 2018-7-20 14:34:20 | 显示全部楼层 |阅读模式
本帖最后由 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=输入名称:"
复制代码
刚刚代码贴少了点,求大大们帮忙~~~

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2018-7-20 14:51:40 | 显示全部楼层
如果行首第一个字符为[,则输出整行,否则以,为分隔符,截取每行的第一段并set /p叠加输出
 楼主| 发表于 2018-7-20 14:58:30 | 显示全部楼层
回复 2# zaqmlp


    大哥,我也这种想的,可代码呢?
 楼主| 发表于 2018-7-20 15:14:51 | 显示全部楼层
求大神,在线=~~~~~~
发表于 2018-7-20 20:37:17 | 显示全部楼层

  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技术 +1 收起 理由
pcrock + 1 乐于助人

查看全部评分

 楼主| 发表于 2018-7-20 22:04:26 | 显示全部楼层
回复 5# yhcfsr


    大哥,你这个只能这种
[A]
111 222 [B] 333 444 ......
不是我想要的~谢谢你的解答
 楼主| 发表于 2018-7-20 22:05:54 | 显示全部楼层
回复 6# xxpinqz


    谢谢大神~~你的代码帮我大忙了~~完全符合我的要求~~感谢~~
 楼主| 发表于 2018-7-20 22:13:30 | 显示全部楼层
回复 6# xxpinqz


    大神,能不能在这个基础上再加上一个条件,如下
[A]                   :这一行显示不变
111 222 333 444 555 666                :这一行显示6个后换行
777 888 999 123 321 235
。。。
[B]         :同上
111 222 。。。
。。。
发表于 2018-7-20 23:39:31 | 显示全部楼层

  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技术 +1 收起 理由
pcrock + 1 乐于助人,谢谢大神~~

查看全部评分

 楼主| 发表于 2018-7-21 10:04:24 | 显示全部楼层
本帖最后由 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 的方法做菜单。我现在能做到的是输入关键字或词才执行对应的菜单,因有中文在里面,输入时比较没效率,所以~~~~~希望大 神能再帮帮我~~~
发表于 2018-7-22 01:50:56 | 显示全部楼层

  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技术 +1 收起 理由
pcrock + 1 感谢给帖子标题标注[已解决]字样,谢谢大神

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 13:17 , Processed in 0.025102 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表