[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]用批处理查找完全匹配的行

本帖最后由 ANSL 于 2022-4-10 08:38 编辑

1.txt内容
one
two
three

用户输入一个词
要和1.txt的的一个行完全匹配
如果没找到
显示2
如果找到了
显示那行的行数
如 23

本帖最后由 qixiaobin0715 于 2022-4-8 15:23 编辑

保存为ANSI编码
  1. @echo off
  2. set /p var=请输入单词:
  3. findstr /n /be /lc:"%var%" a.txt
  4. if errorlevel 1 echo,不存在单词%var%。
  5. pause
复制代码

TOP

本帖最后由 ANSL 于 2022-4-8 19:33 编辑

回复 2# qixiaobin0715只显示他的行数并且得完全匹配
行数显示示例: 23
行数不带:

TOP

回复 1# ANSL


    这个需要好奇怪,比如代码输出2,那么到底是没找到呢?还是找到了而且恰好是第二行呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# ANSL
我觉得这样显示很好啊,在一行中既显示行数又能看到你到底输入的是什么单词。
不知你非要单独显示行数有什么意图?上面的显示格式最终对你有什么影响吗?
如果确实需要单独显示行数,可自行修改,提示:
核心代码是2楼第3行代码,可将其放在
  1. for /f "delims=:" %%a in ('findstr ...') do ...
复制代码
中进行切分。

TOP

回复 5# qixiaobin0715
那完整代码是什么?

TOP

回复 1# ANSL
  1. @echo off
  2. cd /d "%~dp0"
  3. set "return=NotFound"
  4. set "input=Nothing"
  5. set /p "input=Which keyword:"
  6. for /f "delims=:" %%i in ('type "1.txt" ^| findstr /n /l /x /c:"%input%"') do (
  7.     set "return=%%i"
  8. )
  9. echo,%return%
  10. pause
复制代码
1

评分人数

    • ANSL: 厉害!技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

还是Batcher的思路简洁。
按照我在5楼的想法,代码是这样的:
  1. @echo off
  2. set /p var=请输入单词:
  3. for /f "delims=:" %%a in ('findstr /n /be /lc:"%var%" a.txt') do (
  4.     echo,%%a
  5.     set str=%%a
  6. )
  7. if not defined str echo,不存在单词%var%。
  8. pause
复制代码
两个代码对比就能看出,我的代码就稍显啰嗦。
1

评分人数

    • ANSL: 这个也不错!技术 + 1

TOP

返回列表