Re: [問題] 檔名過濾器
用前面推文的方法試了一下,大概是像這樣
/* 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
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章