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

[文本处理] [已解决]求助bat查找文本匹配并输出

[复制链接]
发表于 2015-5-10 19:20:29 | 显示全部楼层 |阅读模式
本帖最后由 fcxk 于 2015-5-10 22:31 编辑

例如:

a.txt

000x000568  内容XXXXXXXXXXXXX
0125x00002  内容BBBBBBBBBBBBB
XXXXXXXXXX  内容DDDDDDDDDDDD
N条数据

输入 0125x00002 时或其中一条相对应的。显示相对应的内容
发表于 2015-5-10 20:04:03 | 显示全部楼层
  1. @echo off
  2. :#
  3. set /p var=请输入要找的内容:
  4. for /f "tokens=1*" %%a in ('findstr "%var%" a.txt') do echo %%b
  5. goto #
  6. pause
复制代码
 楼主| 发表于 2015-5-10 20:11:14 | 显示全部楼层
本帖最后由 fcxk 于 2015-5-10 20:13 编辑

要限制查询的内容对应、比如 XXXXXXXXXX  内容DDDDDDDDDDDD

必须要输入XXXXXXXXXX时,得出相就结果、没有满足对应条件时判断输入错误

现在楼上的只要输入一个0就得出全部带0的结果

我要的是比如文本内容是9个0、必须要达到9个0,才能显示相对应结果内容、否则查询错误
发表于 2015-5-10 20:47:21 | 显示全部楼层
  1. @echo off
  2. :#
  3. set /p var=请输入要找的内容:
  4. for /f "tokens=1*" %%a in ('findstr "%var%" a.txt') do if "%%a"=="%var%" echo %%b
  5. goto #
  6. pause
复制代码
 楼主| 发表于 2015-5-10 20:55:09 | 显示全部楼层
本帖最后由 fcxk 于 2015-5-10 20:56 编辑

回复 4# yangfengoo


    谢谢、输入的是可以查询到了、但其他相应的就不会显示、能不能帮我加上输入的后5位相匹配的也显示出来

   就是在完全匹配的情况下,完全匹配的在最前、后面跟着显示后5位相匹配的结果
发表于 2015-5-10 21:02:10 | 显示全部楼层
不明白,举例说明下 你要的结果
 楼主| 发表于 2015-5-10 21:12:24 | 显示全部楼层
本帖最后由 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或空值
显示:
输入查询错误。
发表于 2015-5-10 22:07:16 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :#
  4. set /p var=请输入要找的内容:
  5. for /f "tokens=1*" %%a in ('findstr "!var!" a.txt') do (
  6. if "%%a"=="!var!" (
  7.    echo,%%a& echo,%%b
  8.    for /f "tokens=1*" %%i in ('findstr "!var:~-5!" a.txt') do (
  9.      if not "%%i"=="!var!" echo,%%i&echo,%%j
  10.    )
  11.   )
  12.   set var=#
  13. )
  14. if not "!var!"=="#" echo,输入查询错误
  15. goto #
复制代码

评分

参与人数 1技术 +1 收起 理由
fcxk + 1 谢谢你。已经很满意了

查看全部评分

 楼主| 发表于 2015-5-10 22:23:32 | 显示全部楼层
回复 8# yangfengoo


    怎么上传本地图片啊,我给你看结果

   现在这代码匹配的怎么是前5位啊。
发表于 2015-5-11 01:04:30 | 显示全部楼层
这样呢?
  1. @echo off
  2. set str=01x00150022
  3. for /f "tokens=1,2" %%i in ('findstr /i "\<%str%\>" a.txt') do (
  4.     echo;%%i
  5.     echo;%%j
  6. )
  7. for /f "tokens=1,2" %%i in ('findstr /iv "\<%str%\>" a.txt^|findstr /i "%str:~-5%\>"') do (
  8.     echo;%%i
  9.     echo;%%j
  10. )
  11. pause
复制代码
 楼主| 发表于 2015-5-11 09:24:51 | 显示全部楼层
本帖最后由 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没有找到搜索字符串、当输入后面带有空格时、就如同死了程序一样、不会查询。并不是直接显示、自己定义的查询错误
发表于 2015-5-11 11:40:41 | 显示全部楼层
回复 11# fcxk
我上面代码只是测试一个小样本 你也没给出文件测试
要自定义搜索字符 把 set str=01x00150022 改为  set /p str=
如果一次输入多个条件 要改代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 05:25 , Processed in 0.021040 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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