中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [已结]Findstr的怪异用法 上一主题 | 下一主题
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『楼 主』:  [已结]Findstr的怪异用法

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 ]

2008-7-18 23:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

看看findstr的帮助就知道了。

2008-7-19 00:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

把自己没有看到过的用法归纳为“怪异”,是不是稍微有点不恰当呢?
findstr /m /c:"123" *.txt




2008-7-19 01:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 4 楼』:  

for /f "tokens=*" %%a in ('dir /b ?.txt') do findstr "123" %%a >nul 2>nul && echo %%a

废话木.这里不来三次就是怪事.

2008-7-19 18:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 5 楼』:  



  Quote:
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 ]

2008-7-19 21:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 6 楼』:  



  Quote:
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

废话木.这里不来三次就是怪事.

我来蛮多次了,大概学习不够所以等于不到三次

2008-7-19 21:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by lxmxn at 2008-7-19 12:19 AM:
看看findstr的帮助就知道了。

因为看不懂所谓主控台 (stands for console) 是什么意思
学习了

2008-7-19 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hmilywenjia
新手上路





积分 8
发帖 5
注册 2008-2-2
状态 离线
『第 8 楼』:  findstr可以执行二进制搜索吗?问题我写在下面

问题:
我要用find 或findstr 搜索本地所有盘里的 *.vbp 或 *.dll  文件里是否包含有某个字符串,比如“ET_TCLICK”,并echo出来,提示有或没有,如果有要指出在哪个文件中,因为是在多个文件中搜索,在win2000的查找功能里有这个功能,但xp没有,所以想自己用findstr命令看能否做到,望高人指点,留个QQ,如果那位高人帮解决了,希望能告知下,谢谢,QQ:147180994

2008-11-3 12:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 9 楼』:  

findstr /mf:/ "123"

Findstr /m /f:/ "123"

/M        如果文件含有匹配项,只打印其文件名
/F:file   从指定文件读文件列表 (/ 代表控制台)。

findstr的/f:/参数设置findstr打管道符接受被搜索的文件,也就是来自dir /b ?.txt的文件列表,其实在findstr中可以更简化为findstr /m /s "123" ?.txt



49206C6F766520796F752067757973 54656C3A3133383238343036373837
2008-11-3 20:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  Re 8楼

不可以
二进制搜索需要第三方命令行工具(比如string.exe)

string.exe可以去这里下载:批处理室附件收集专用帖



2008-11-3 20:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qvdyw3934
新手上路





积分 14
发帖 13
注册 2008-10-16
状态 离线
『第 11 楼』:  

小弟还不知有这种用法
真是长见识了....

2008-11-3 21:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pgfj18
新手上路





积分 4
发帖 3
注册 2009-4-24
状态 离线
『第 12 楼』:  

以前还未见过这用法,真是开眼界了,谢谢啦

2009-4-27 12:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: