作者mantour (朱子)
看板C_and_CPP
标题Re: [问题] 档名过滤器
时间Tue Feb 3 00:30:18 2009
用前面推文的方法试了一下,大概是像这样
/* findfile.c */
#include<stdio.h>
#include<windows.h>
int main(int argc,char* argv[])
{
HANDLE h;
WIN32_FIND_DATA data;
if(argc!=3)
{
printf("incorrect number of arguments\n");
return 1;
}
if(!SetCurrentDirectory(argv[1]))
{
printf("directory not found!\n");
return 2;
}
h=FindFirstFile(argv[2],&data);
if(h==INVALID_HANDLE_VALUE)
{
printf("file not found");
return 3;
}
printf("%s\n",data.cFileName);
while(FindNextFile(h,&data))
{
printf("%s\n",data.cFileName);
}
return 0;
}
/* end of file*/
现在假设我在目录abc里面有三个档案
B2abc.txt
B2123abd.txt
B2b123d12.exe
执行起来大概像这样
findfile abc b2*b*d*.*
就会输出
B2123abd.txt
B2b123d12.exe
如果需要更精确的搜寻,也许可以把一个个档名抓出来用regular expression
的library处理吧
※ 引述《chiucs (ChiuCS)》之铭言:
: 我有一个目录,档案数量非常之大,(约15万笔)
: 目录内的档案会不定时增/删,(所以无法在平时先记录档名备用) (但数量都大约维持在15\
: 万笔)
: 想写一个程式,方便找寻目录内部的某一个档案(如包含*ABC*)
: 因为档案的开头文字差异性有限,(档名都是以B2开头,MS无法使用B2*ABC*来dir)
: 档名文数字字数又不定(约15至25字完)
: 查寻全部的档案中,过滤符合想要的档名
: 速度非常的慢(要好多分钟以上)
: 想请问,是否有好用的API,可以过滤档名
: (NOTE:我有用网路上freesware的档案总管所提供的档名过滤器功能,
: 它的速度约在数秒,是否有人知道它是如何作到的)
: 感谢各位大大的耐心阅读与回覆
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.64.43