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

[文本处理] 【分享】BAT命令findstr中/R参数的思考

[复制链接]
发表于 2021-1-11 15:25:19 | 显示全部楼层 |阅读模式
findstr是cmd命令中比较另类,比较复杂的一个命令。其参数众多,功能强大,有很多组合方式,不同场合用法迥异,一不小心就会中套路。
我在使用此命令时就遇到过不少陷阱,虽然对大多数问题还是一知半解,但经过多次的失败和成功,还是有那么一点点体会。现分享给大家。
记得不少教程里说过:设置findstr的参数/R有点多余,findstr默认为“一般表达式模式”,加与不加都一样。我就想设计程序的都是聪明人,不会无缘无故的搞出这么个无用的参数吧。
开始使用findstr时确实是不加/r,能够实现“一般表达式”的功能,随着时间推移,发现有2种情况还是加上参数才行:
1.第一种是使用"/C:string 使用指定字符串作为文字搜索字符串"时,当用于纯字符串时,并没有什么差别,如果使用通配符时,就需要加上/r。
例如:findstr /r /c:"[0-9] @" a.txt。显示a.txt中所有包含"数字 @"的行时,就必须加上/r,其它通配符也一样。
2.第二种是搜索多字符串,并且字符串中含有汉字时,也需要加上参数/r。
比如搜索文本文件中分别含有”张三,李四,王五“的所有行:findstr /r "张三 李四 王五" a.txt。
上面所说是个人的一点浅薄的见解,只是想抛砖引玉而已,不足之处希望大佬们更正。
发表于 2021-1-11 16:01:53 | 显示全部楼层
回复 1# qixiaobin0715


记得不少教程里说过:设置findstr的参数/R有点多余,findstr默认为“一般表达式模式”,加与不加都一样。

这个说法确实不严谨。

findstr 命令参数 /c 和 /r 的不同用处一例
http://bbs.bathome.net/thread-14682-1-1.html#pid99416

findstr 命令使用 /r 的时候需要注意转义字符的特殊处理
http://bbs.bathome.net/thread-498-1-1.html
 楼主| 发表于 2021-1-11 16:12:10 | 显示全部楼层
回复 2# Batcher
谢谢分享,又学到了需要转义的知识。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 02:31 , Processed in 0.017277 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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