标题: [文本处理] [已解决]求助批处理把文本按特定格式显示 [打印本页]
作者: 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
代码:- @echo off&setlocal enabledelayedexpansion
- set /a "n=0"
- for /f "tokens=1,2 delims=,$" %%a in ('more a.txt^|findstr /i ","') do (
- set /a n+=1&set /p =%%a<nul &if !n!==6 (echo.&set n=))
- echo.
- 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
- @echo off
- (for /f "tokens=1* delims=," %%a in (a.txt) do (
- if "%%b"=="" (
- if not defined . (
- echo,%%a
- set .=.
- )else (
- echo,
- echo,%%a
- )
- ) else set /p "=%%a "
- ))<nul
- 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
- @echo off
- (for /f "tokens=1* delims=," %%a in (a.txt) do (
- if "%%b"=="" (
- set n=-1
- if not defined . (
- echo,%%a
- set .=.
- ) else (
- echo,
- echo,%%a
- )
- ) else set/an+=1,1/(6-n^)||(echo,&set n=0)&set /p "=%%a "
- ))<nul 2>nul
- 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
- @echo off&setlocal enabledelayedexpansion&set m=1000
- (for /f "tokens=1* delims=," %%a in (b.txt) do (
- if "%%b"=="" (
- set n=-1
- if not defined . (
- echo,%%a
- set .=.
- ) else (
- echo,
- echo,%%a
- )
- ) else set/an+=1,m+=1,1/(6-n^)||(echo,&set n=0)&set /p "=!m:~-3!.%%a "
- ))<nul 2>nul
- pause
复制代码
问题一次性提出。。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |