win7搜索文件通配符使用问题(精通者解答)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win7搜索文件通配符使用问题(精通者解答)相关的知识,希望对你有一定的参考价值。
一知半解者勿入,提问前我已经百度几小时以上,学习专业论坛好几个。举例:先准备一个名为“测试”的文件夹,放有“关于晋升经理的通知”和“干扰文件”这两个doc文档,前者的内容为“关于晋升张三为部门经理的通知”,后者内容随便写。现在,进入测试文件夹,文件夹选项的搜索选项卡中,已勾上“始终搜索文件名和内容”及“查找部分匹配”。下面,我想搜索包含“升张”的文件,于是在搜索框内输入“*升张”,理论上应该找到一个结果啊,但搜索不出来。求解!!!此外,我还想问一下,采用内容方式搜索是否可以使用正则表达式??比如,*升张 OR *扰文* 。最好帮我找一篇或者亲自写一篇专业详尽的win7搜索实例文章(别提everything等第三方软件),而且要实例要包括复杂条件,结合筛选器(这部分我已经比较懂了)和正则表达式搜索文件内容。再次声明,不要乱复制,请高手亲自测试再回答我。你能百度到的,我都已经百度过了!!!
蛋疼的win7文件管理,蛋疼的从左到右段词,非要加通配符,貌似强大的正则表达式,但真正有几个人去严谨地测试过呢!!!
我的核心问题是,搜索文件内容中(非文件标题)包含指定关键字词(而且是非常用词语)的时候,如何正确运用通配符及正则表达式。用自定义筛选器(包括类型大小日期作者等要素)搜索文件名的技巧我已经懂了。
感谢一二楼,大家可以不去看一二楼了,太累。其实,经过自行研究,大概应该是win7词库不能辨别非常用中文词语的缘故,即便加上通配符。但我找不出问题解决办法。请直接严格按照我的例子去测试,以避免遗漏。http://pan.baidu.com/s/1qWz4Sv6
,吧,如果同意回复我,我再主动加您】。最后还请原谅,我不是题主要求的精通者,但是我也没忍住想发表下自己的想法,当然我也不是来想要什么分的,纯属想和各位大佬一起学习交流,谢谢看完! 参考技术A 使用通配符辅助搜索
虽然从WIN最初版本开始就支持这项功能;但是还是有很多人不熟悉它。下面介绍两个常用的通配符。
1 星号(*): 星号可以在文件中代表任意的字符串。比如搜索*.doc,就可以搜索到系统中所有以 doc 作为后缀的文件。搜索*ese,就可以搜索以ese结尾的所有单词,例如:Chinese,Japanese, etc。
2 问号(?): 问号可以代表文件中的一个字符。
ps:虽然你说的很复杂,但其实很简单,只是你对通配符的理解太少,如题,如果要搜索你说的这这两个文件,应使用 *升张? OR *扰文? 这样的方式!以达到模糊搜索的效果,WIN本身就对中文的所搜不稳定,所以使用中更应该注意细节。追问
你有测试过吗? *升张? OR *扰文? ,意思就是查找包含xx升张xx或者xx扰文xx的文件,理论上应该得到两个结果吧,但是,我测试结果并没有第一个文件!!!我在想,按内容查找中文关键词(非常用词语)是不是不能用*或?这些通配符呢?你的一句“你对通配符理解太少”让我以为遇见了大神。。。。通配符我早学习过了。还请大神继续研究,谢谢!
追答我可以100%肯定的回答你,是正确的。
而且你理解错了,?是忽略之后的内容包括文件类型的通配符。
感谢你的认真和执着。你注意到没,你犯了个错误。你在拿文件名作测试!!!对于搜索文件名含有指定关键字,win7的搜索表达式没有任何问题,我知道。但,我研究的是按中文(并且是‘非常用词语’)关键字进行文件内容搜索,而非文件名!!
这样,你严格按照我的测试例子去进行!期待高手going !!
不想解释了。太累!见图。
兄弟,别泄气。你知道吗,你的文件名已经包含了“升张”。为什么不严格按照我的例子呢
追答看错了,复制的你的原文的,
参考技术B 胜日寻芳泗水滨,无边光景一时新。等闲识得东风面,万紫千红总是春。 参考技术C首先 win7自带搜索没你想象中的强大,然后确定你打开了自然语言搜索和搜索文件内容
追问感谢关注。我已经说过,打开了搜索文件内容。你的例子中,如果打开了自然语言,就不需要写表达式了吧?而且,你的关键字QQ出现在文件名而非文件内容中,再而且,or应该大写吧???
建议楼下的认真阅读我的问题,最好按照我的例子去亲自实验。如果大家觉得详细回答我太费时的话,就回答我提出的第一个问题就是了。谢谢大神们!!
你试过不打开自然语言的情况下 又写 or 是什么情况吗?
还有,您也可以试下 大小写 or 有没有区别
doc文件内容:
不打开自然语言的情况下,小写or是错误写法,本来就该大写。我早测试过了。我关注的是按文件内容搜索,谢谢!
如果对这方面有研究,麻烦大神直接抠抠我:幺八五七三七幺五,这样可以远程演示。
你是对的
只能这样了 帮不了你···
我明白你的测试要求“包含12或者a的doc文档”,win7从左到右断字功能已经能够辨别你的关键字a及12,因为你的关键字是一个非常简短的字而非复杂的中文词,而且文件内容中的a和12前面都有空格,这对win7系统来说,能轻易辨认。但是,(在你的例子中)你试试关键字改为 *试文 AND *.doc,理论上该有一个结果吧?但。。。
追答
我的结果是可以搜索到的 我用的测试文件也给你看下··· 你在 试文 两个字前面不要 星号试试
你的测试例子确实找不出来,陪你到这里了···
兄弟,我稍作改动,然后你不变搜索表达式,搜索出来的结果就变成了一个,个中原由你分析下就明白了。貌似我比你还分析得透彻:),你也挺喜欢专研呢。
这是TYUO修改后的内容:
测试文!@!@#@$#@%#^$#qd吃撒啊是大大qwdwfnuwr2149u5093森么
这是WER:
测试文件r214982htni43hti43h6i发在这里3u5093森么测试文
是这样改吗?
为什么我总是得两个····
我觉得还是有问题,加我q吧,18573715方便传送测试文件。这样沟通太麻烦。
参考技术D 来挖坟了~回复好多没具体看,我大概试了下,搜搜内容和自然语言开启,新建“通知.txt”中输入内容“关于晋升张三为部门经理的通知”,关键字“升张”死活搜不到,一搜“张三”就有了~~~看来对中文搜索不太友好C++使用通配符查找文件(FindFirstFile)
调用 FindFirstFile 和 FindNextFile 可搜索某个目录下的相应文件。
BOOL SearchFilesByWildcard(WCHAR *wildcardPath)
{
HANDLE hFile = INVALID_HANDLE_VALUE;
WIN32_FIND_DATA pNextInfo;
hFile = FindFirstFile(wildcardPath,&pNextInfo);
if(INVALID_HANDLE_VALUE == hFile)
{
return FALSE;
}
WCHAR infPath[MAX_PATH] = {0};
if(pNextInfo.cFileName[0] != '.')
{
printf("Find result = %ws\r\n",pNextInfo.cFileName);
}
while(FindNextFile(hFile,&pNextInfo))
{
if(pNextInfo.cFileName[0] == '.')
{
continue;
}
printf("Find result = %ws\r\n",pNextInfo.cFileName);
}
return FALSE;
}
int main(int argc,char* argv[])
{
setlocale(LC_ALL,"chs");
//查找 abc开头的txt文件
printf("Search 1:\r\n");
SearchFilesByWildcard(L"E:\\Test\\abc*.txt");
printf("\r\n");
//查找 abc开头的文件
printf("Search 2:\r\n");
SearchFilesByWildcard(L"E:\\Test\\abc*");
printf("\r\n");
//查找jnt文件
printf("Search 3:\r\n");
SearchFilesByWildcard(L"E:\\Test\\*.jnt");
printf("\r\n");
//查找文件名为4个字符的txt文件
printf("Search 4:\r\n");
SearchFilesByWildcard(L"E:\\Test\\????.txt");
printf("\r\n");
//查找包含"档案"的文件
printf("Search 5:\r\n");
SearchFilesByWildcard(L"E:\\Test\\*档案*");
printf("\r\n");
getchar();
return 0;
}
以上是关于win7搜索文件通配符使用问题(精通者解答)的主要内容,如果未能解决你的问题,请参考以下文章