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

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

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。
上面所说是个人的一点浅薄的见解,只是想抛砖引玉而已,不足之处希望大佬们更正。

回复 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
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
谢谢分享,又学到了需要转义的知识。

TOP

返回列表