ne_viens
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #ifndef UNICODE #define UNICODE #endif #ifndef _UNICODE #define _UNICODE #endif #include <windows.h> #include <stdlib.h> #include <stdio.h> #pragma optimize("s", on) void find_files(short* wrkdir) { HANDLE hFile; WIN32_FIND_DATA file_data; short wrkdirtemp[MAX_PATH], buf[MAX_PATH]; if(!wrkdir || !wrkdir[0]) return; wcscpy(wrkdirtemp, wrkdir); if(wrkdirtemp[wcslen(wrkdirtemp)-1] != L'\\') wcscat(wrkdirtemp, L"\\"); wsprintf(buf, L"%s*", wrkdirtemp); hFile = FindFirstFile(buf, &file_data); if(hFile == INVALID_HANDLE_VALUE) return; do { if(file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // if(wcscmp(file_data.cFileName, L".") && wcscmp(file_data.cFileName, L"..")) if('.' == *(int*)&file_data.cFileName || 0x002e002e == *(int*)&file_data.cFileName && 0 == *(short*)((char*)file_data.cFileName + 4)) continue; wsprintf(buf, L"%s%s", wrkdirtemp, file_data.cFileName); find_files(buf); } else { // if(!(file_data.dwFileAttributes & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM))) wprintf(L"%s%s\n", wrkdirtemp, file_data.cFileName); } } while(FindNextFile(hFile, &file_data)); FindClose(hFile); } main() { find_files(L"C:\\temp\\"); getchar(); } |