2011年1月22日 星期六

C/C++:批次讀取指定資料夾內所有檔案的檔名

#include <windows.h>
#include <stdio.h>
void main()
{
    char InputPath[65535] = "C:\\Program Files\\";  
    //放要讀取檔案的資料夾路徑到InputPath字串裡
    char szDir[65535];
    char dir[65535];
    WIN32_FIND_DATA FileData;
    HANDLE          hList;
    sprintf(szDir, "%s\\*", InputPath );
    if ( (hList = FindFirstFile(szDir, &FileData))==INVALID_HANDLE_VALUE )
        printf("No files be found.\n\n");
    else {
        while (1) {
            if (!FindNextFile(hList, &FileData)) {
                if (GetLastError() == ERROR_NO_MORE_FILES)
                    break;
            }
            sprintf(dir, "%s\\%s", InputPath, FileData.cFileName);
            printf("%s\n", dir);
        }
    }
    FindClose(hList);
}

3 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 你好,請教一下,當我執行程式時,出現了以下的錯誤訊息,我去爬過文,但還是不明白如何解決,可以的話請教教我!
    error C2664: 'HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)' : 無法將引數 1 從 'char [65535]' 轉換為 'LPCWSTR'

    回覆刪除
  3. 你好,我剛剛找到了一個解決方法了,就是加上這段 CString str(szDir); 讓LPCWSTR轉換過去,謝謝你的程式碼,讓我又學到了,受益良多。

    回覆刪除