标题: [文本处理] [已解决]批处理如何根据文本生成分类菜单 [打印本页]
作者: lfoqtal 时间: 2011-7-29 14:47 标题: [已解决]批处理如何根据文本生成分类菜单
本帖最后由 lfoqtal 于 2011-7-29 17:25 编辑
文本内容如下有几百行,如何根据#号后的文字生成选择菜单,再根据选择显示相关内容
如,菜单一为:
1 市场
2 超市
菜单二为:
1楼
2楼
然后根据选择显示相应的行,
关键内容不是固定的,楼层也不相同有可能有4楼,所以想用批处理自动获取分类
A001=7854621#市场.2楼
A002=4874611#市场.1楼
A003=7854651#市场.2楼
A004=9541871#市场.1楼
A005=1214132#超市.2楼
A006=a454338#市场.3楼
A007=4554451#市场.3楼
A008=3214151#市场.1楼
A009=2344116#市场.2楼
A010=7857815#市场.3楼
A011=7884113#超市.2楼
A012=78541a4#超市.1楼
A013=7878131#市场.2楼
A014=78a4543#市场.1楼
A015=7771551#超市.2楼
A016=155a462#超市.1楼
A017=6441112#市场.2楼
A018=7454121#超市.1楼
A019=7447978#批发部.1楼
.
.
.
作者: tmplinshi 时间: 2011-7-29 15:11
没看懂。
是要生成“菜单一.txt”和“菜单二.txt”吗?按照什么规律来生成这两个文本?
作者: lfoqtal 时间: 2011-7-29 15:16
本帖最后由 lfoqtal 于 2011-7-29 15:24 编辑
回复 2# tmplinshi
不是生成文本,是直接生成选择菜单,提示进行选择,类似- echo 1 市场
- echo 2 超市
- set /p p=请选择
- if %p%==1 set p=市场
- if %p%==2 set p=超市
- cls
- echo 1楼
- echo 2楼
- set/p a=请选择
- findstr "#%p%.%a%楼" 1.txt
复制代码
固定的我会编但这样未知分类内容的就不太会了,不知怎么从重复的内容中只保留一项做为菜单
顺序无所谓只要不重复就行,还有要对应数据,比如超市只有1楼2楼4楼时只最示这三个
作者: 601997526 时间: 2011-7-29 16:19
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=2,3 delims=#." %%i in (a.txt) do if not defined %%i (set /a n+=1&set a!n!=%%i&set %%i=1)
- for /l %%i in (1 1 !n!) do echo %%i !a%%i!
- set /p p=请选择
- for /l %%i in (1 1 !n!) do if %p%==%%i set p=!a%%i!
- echo %p%
- pause
复制代码
作者: tmplinshi 时间: 2011-7-29 17:16
本帖最后由 tmplinshi 于 2011-7-29 17:22 编辑
- @echo off
- setlocal enabledelayedexpansion
-
- set file="list.txt"
-
- set n=
- set menu1=
-
- :: ---------------------------
- set \n=^
-
-
- :: ---------------------------
-
- for /f "usebackq tokens=2,3 delims=#." %%a in (%file%) do (
- if not defined #%%a (
- set /a n += 1
- set menu1=!menu1!!n! %%a!\n!
- set name!n!=%%a
- set #%%a=#
- )
- if not defined #%%a.%%b (
- set #%%a.%%b=#
- )
- )
-
- :menu1
- cls
- echo !menu1!
- set input1=
- set /p input1=请选择:
-
- if not defined input1 goto menu1
- if !input1! gtr %n% goto menu1
- if !input1! lss 0 goto menu1
-
- :menu2
- cls
- for /f "skip=1 tokens=2 delims=.=" %%a in (' set #!name%input1%! ') do echo %%a
- echo,
- set input2=
- set /p input2=请选择:
-
- if not defined input2 goto menu2
-
- cls
- findstr "#!name%input1%!.%input2%楼" %file%
- echo,
-
- pause
- goto menu1
复制代码
作者: lfoqtal 时间: 2011-7-29 17:27
感谢大家帮忙,
4楼的只能出第一层菜单,没有第二层所以无法使用
5楼的可以使用而且数据发生变化后可以适应,非常好
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |