标题: [文本处理] [已解决]求助bat查找文本匹配并输出 [打印本页]
作者: fcxk 时间: 2015-5-10 19:20 标题: [已解决]求助bat查找文本匹配并输出
本帖最后由 fcxk 于 2015-5-10 22:31 编辑
例如:
a.txt
000x000568 内容XXXXXXXXXXXXX
0125x00002 内容BBBBBBBBBBBBB
XXXXXXXXXX 内容DDDDDDDDDDDD
N条数据
输入 0125x00002 时或其中一条相对应的。显示相对应的内容
作者: yangfengoo 时间: 2015-5-10 20:04
- @echo off
- :#
- set /p var=请输入要找的内容:
- for /f "tokens=1*" %%a in ('findstr "%var%" a.txt') do echo %%b
- goto #
- pause
复制代码
作者: fcxk 时间: 2015-5-10 20:11
本帖最后由 fcxk 于 2015-5-10 20:13 编辑
要限制查询的内容对应、比如 XXXXXXXXXX 内容DDDDDDDDDDDD
必须要输入XXXXXXXXXX时,得出相就结果、没有满足对应条件时判断输入错误
现在楼上的只要输入一个0就得出全部带0的结果
我要的是比如文本内容是9个0、必须要达到9个0,才能显示相对应结果内容、否则查询错误
作者: yangfengoo 时间: 2015-5-10 20:47
- @echo off
- :#
- set /p var=请输入要找的内容:
- for /f "tokens=1*" %%a in ('findstr "%var%" a.txt') do if "%%a"=="%var%" echo %%b
- goto #
- pause
复制代码
作者: fcxk 时间: 2015-5-10 20:55
本帖最后由 fcxk 于 2015-5-10 20:56 编辑
回复 4# yangfengoo
谢谢、输入的是可以查询到了、但其他相应的就不会显示、能不能帮我加上输入的后5位相匹配的也显示出来
就是在完全匹配的情况下,完全匹配的在最前、后面跟着显示后5位相匹配的结果
作者: yangfengoo 时间: 2015-5-10 21:02
不明白,举例说明下 你要的结果
作者: fcxk 时间: 2015-5-10 21:12
本帖最后由 fcxk 于 2015-5-11 09:29 编辑
回复 6# yangfengoo
例子:
a.txt
内容:
01x00150022 内容XXXXXXXXXXX
01x01550022 内容XXXXXXXxxx
01x00100666 内容XXXXXXXXXXX
01x00800756 内容XXXXXXXXXXX
01x000660ab 内容XXXXXXXXXXX
01x01000756 内容XXXXXXXXXXX
后面还有N条数据
想要的结果:
输入:01x00150022
显示:
01x00150022
内容XXXXXXXXXXX
01x01550022
内容XXXXXXXxxx
首个显示完整匹配、后面显示后5位匹配、
输入:01x00或空值
显示:
输入查询错误。
作者: yangfengoo 时间: 2015-5-10 22:07
- @echo off
- setlocal enabledelayedexpansion
- :#
- set /p var=请输入要找的内容:
- for /f "tokens=1*" %%a in ('findstr "!var!" a.txt') do (
- if "%%a"=="!var!" (
- echo,%%a& echo,%%b
- for /f "tokens=1*" %%i in ('findstr "!var:~-5!" a.txt') do (
- if not "%%i"=="!var!" echo,%%i&echo,%%j
- )
- )
- set var=#
- )
- if not "!var!"=="#" echo,输入查询错误
- goto #
复制代码
作者: fcxk 时间: 2015-5-10 22:23
回复 8# yangfengoo
怎么上传本地图片啊,我给你看结果
现在这代码匹配的怎么是前5位啊。
作者: terse 时间: 2015-5-11 01:04
这样呢?- @echo off
- set str=01x00150022
- for /f "tokens=1,2" %%i in ('findstr /i "\<%str%\>" a.txt') do (
- echo;%%i
- echo;%%j
- )
- for /f "tokens=1,2" %%i in ('findstr /iv "\<%str%\>" a.txt^|findstr /i "%str:~-5%\>"') do (
- echo;%%i
- echo;%%j
- )
- pause
复制代码
作者: fcxk 时间: 2015-5-11 09:24
本帖最后由 fcxk 于 2015-5-11 09:35 编辑
回复 10# terse
你这个更不行,直接按继续退出
你直接定一个值了啊,N条数据查询,不是单个数据查询
例子:
a.txt
内容:
01x00150022 内容XXXXXXXXXXX
01x01550022 内容XXXXXXXxxx
01x00100666 内容XXXXXXXXXXX
01x00800756 内容XXXXXXXXXXX
01x000660ab 内容XXXXXXXXXXX
01x01000756 内容XXXXXXXXXXX
后面还有N条数据
想要的结果:
输入:01x00150022时,查询相匹配的数据、首个显示完整匹配、后面显示后5位匹配、
显示:
01x00150022
内容XXXXXXXXXXX
01x01550022
内容XXXXXXXxxx
输入:01x00或空值
显示:
输入查询错误。
8楼的大哥的代码我昨晚试了下、查询的结果是反而显示前面5位匹配了,查询出2000多条前面匹配的数据,我要 的是后面5位相同的
还有就是用findstr时,当输入带空值时会显示findstr没有找到搜索字符串、当输入后面带有空格时、就如同死了程序一样、不会查询。并不是直接显示、自己定义的查询错误
作者: terse 时间: 2015-5-11 11:40
回复 11# fcxk
我上面代码只是测试一个小样本 你也没给出文件测试
要自定义搜索字符 把 set str=01x00150022 改为 set /p str=
如果一次输入多个条件 要改代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |