楼 主
[已结]Findstr的怪异用法
发表于 2008-07-18 23:22 · 中国 台湾 中华电信
初级用户
★
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
echo 123456 >1.txt
echo abcdefg >2.txt
echo 123gde >3.txt
一般要找上面所列档案内有含123文字的档案
一般方式为
for /f "tokens=*" %%a in ('dir /b ?.txt') do findstr "123" %%a >nul 2>nul && echo %%a
输出结果为
1.txt
3.txt
这样findstr会执行三次
但刚刚发现老外写的批程序用了一个方式,这样findstr只要跑一次节省时间
如下:
dir /b ?.txt|findstr -MF:/ "123"
输出结果为
1.txt
3.txt
以前没看过这样的用法
-F:/似乎表示是看前面的输出结果?
[ Last edited by HAT on 2008-11-3 at 16:08 ]
第 2 楼
发表于 2008-07-19 00:19 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
第 3 楼
发表于 2008-07-19 01:11 · 中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
把自己没有看到过的用法归纳为“怪异”,是不是稍微有点不恰当呢?
findstr /m /c:"123" *.txt
第 4 楼
发表于 2008-07-19 18:39 · 中国 北京 朝阳区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
for /f "tokens=*" %%a in ('dir /b ?.txt') do findstr "123" %%a >nul 2>nul && echo %%a
废话木.这里不来三次就是怪事.
第 5 楼
发表于 2008-07-19 21:41 · 中国 台湾 中华电信
初级用户
★
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
Originally posted by HAT at 2008-7-19 01:11 AM:
把自己没有看到过的用法归纳为“怪异”,是不是稍微有点不恰当呢?
findstr /m /c:"123" *.txt
下次改进...如果有的话
这只是例子而已...我看到的写法是
前略
For /f "tokens=*" %%g in ( Profiles.folder.dat ) do @(
VFind -rtf -s61952 -d+%ninety% "%%~g\??????.exe" |(
Findstr -MF:/ "sandbox.*honey.*vmware.*currentuser.*nepenthes" >>d-delA.dat 2>>WowErr.dat
))
后略
我只是把范例简单化而已....不代表就真的看到是那样用。
[
Last edited by sylovanas on 2008-7-19 at 09:44 PM ]
第 6 楼
发表于 2008-07-19 21:42 · 中国 台湾 中华电信
初级用户
★
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
Originally posted by knoppix7 at 2008-7-19 06:39 PM:
for /f "tokens=*" %%a in ('dir /b ?.txt') do findstr "123" %%a >nul 2>nul && echo %%a
废话木.这里不来三次就是怪事.
我来蛮多次了,大概学习不够所以等于不到三次
第 7 楼
发表于 2008-07-19 21:43 · 中国 台湾 中华电信
初级用户
★
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
Originally posted by lxmxn at 2008-7-19 12:19 AM:
看看findstr的帮助就知道了。
因为看不懂所谓主控台 (stands for console) 是什么意思

学习了
第 8 楼
findstr可以执行二进制搜索吗?问题我写在下面
发表于 2008-11-03 12:00 · 中国 北京 鹏博士BGP
新手上路
★
积分 8
发帖 5
注册 2008-02-02 19:34
18年会员
UID 110061
性别 男
状态 离线
问题:
我要用find 或findstr 搜索本地所有盘里的 *.vbp 或 *.dll 文件里是否包含有某个字符串,比如“ET_TCLICK”,并echo出来,提示有或没有,如果有要指出在哪个文件中,因为是在多个文件中搜索,在win2000的查找功能里有这个功能,但xp没有,所以想自己用findstr命令看能否做到,望高人指点,留个QQ,如果那位高人帮解决了,希望能告知下,谢谢,QQ:147180994
第 9 楼
发表于 2008-11-03 20:51 · 中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
findstr /mf:/ "123"
Findstr /m /f:/ "123"
/M 如果文件含有匹配项,只打印其文件名
/F:file 从指定文件读文件列表 (/ 代表控制台)。
findstr的/f:/参数设置findstr打管道符接受被搜索的文件,也就是来自dir /b ?.txt的文件列表,其实在findstr中可以更简化为findstr /m /s "123" ?.txt
49206C6F766520796F752067757973 54656C3A3133383238343036373837
第 10 楼
Re 8楼
发表于 2008-11-03 20:57 · 美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
不可以
二进制搜索需要第三方命令行工具(比如string.exe)
string.exe可以去这里下载:
批处理室附件收集专用帖
第 11 楼
发表于 2008-11-03 21:44 · 中国 台湾 彰化县 中华电信
新手上路
★
积分 14
发帖 13
注册 2008-10-16 12:36
17年会员
UID 128529
性别 男
状态 离线
第 12 楼
发表于 2009-04-27 12:21 · 中国 广东 中山 电信
新手上路
★
积分 4
发帖 3
注册 2009-04-24 12:07
17年会员
UID 143706
性别 男
状态 离线
论坛跳转: