标题: [文本处理] [已解决]用批处理查找完全匹配的行 [打印本页]
作者: ANSL 时间: 2022-4-8 14:48 标题: [已解决]用批处理查找完全匹配的行
本帖最后由 ANSL 于 2022-4-10 08:38 编辑
1.txt内容
one
two
three
用户输入一个词
要和1.txt的的一个行完全匹配
如果没找到
显示2
如果找到了
显示那行的行数
如 23
作者: qixiaobin0715 时间: 2022-4-8 15:10
本帖最后由 qixiaobin0715 于 2022-4-8 15:23 编辑
保存为ANSI编码- @echo off
- set /p var=请输入单词:
- findstr /n /be /lc:"%var%" a.txt
- if errorlevel 1 echo,不存在单词%var%。
- pause
复制代码
作者: ANSL 时间: 2022-4-8 19:32
本帖最后由 ANSL 于 2022-4-8 19:33 编辑
回复 2# qixiaobin0715只显示他的行数并且得完全匹配
行数显示示例: 23
行数不带:
作者: Batcher 时间: 2022-4-8 21:03
回复 1# ANSL
这个需要好奇怪,比如代码输出2,那么到底是没找到呢?还是找到了而且恰好是第二行呢?
作者: qixiaobin0715 时间: 2022-4-9 09:36
回复 3# ANSL
我觉得这样显示很好啊,在一行中既显示行数又能看到你到底输入的是什么单词。
不知你非要单独显示行数有什么意图?上面的显示格式最终对你有什么影响吗?
如果确实需要单独显示行数,可自行修改,提示:
核心代码是2楼第3行代码,可将其放在- for /f "delims=:" %%a in ('findstr ...') do ...
复制代码
中进行切分。
作者: ANSL 时间: 2022-4-9 11:07
回复 5# qixiaobin0715
那完整代码是什么?
作者: Batcher 时间: 2022-4-9 17:04
回复 1# ANSL - @echo off
- cd /d "%~dp0"
- set "return=NotFound"
- set "input=Nothing"
- set /p "input=Which keyword:"
- for /f "delims=:" %%i in ('type "1.txt" ^| findstr /n /l /x /c:"%input%"') do (
- set "return=%%i"
- )
- echo,%return%
- pause
复制代码
作者: qixiaobin0715 时间: 2022-4-10 08:38
还是Batcher的思路简洁。
按照我在5楼的想法,代码是这样的:- @echo off
- set /p var=请输入单词:
- for /f "delims=:" %%a in ('findstr /n /be /lc:"%var%" a.txt') do (
- echo,%%a
- set str=%%a
- )
- if not defined str echo,不存在单词%var%。
- pause
复制代码
两个代码对比就能看出,我的代码就稍显啰嗦。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |