Er möchte einfach nicht aufhören zu posten!
Hier aber etwas anderes. Handgemachte Codeschnipsel um rekrusiv nach Dateien zu suchen. Mit ein wenig Arbeit kann man individuelle Filter einbauen.
Hier leider keine Kommentare, ist etwas älter
bool m_strstrW(wchar_t *s, wchar_t *word) { bool fFound = false; bool bBreak = false; int len = lstrlenW(s); int wordlen = lstrlenW(word); if (!len || !wordlen) return false; for (int i = 0; i < len; i++) { if (s[i] == word[0]) { if ((i + wordlen) <= len) { for (int cmp = 0; cmp < wordlen; cmp++) { if (s[i + cmp] != word[cmp]) { bBreak = true; break; } } if (!bBreak) { fFound = true; break; } bBreak = false; continue; } } } return fFound; } void recrusive_search(const wchar_t *wszPath) { HANDLE hFile = INVALID_HANDLE_VALUE; WIN32_FIND_DATAW findData; RtlSecureZeroMemory(&findData, sizeof(WIN32_FIND_DATAW)); wchar_t wildmask[MAX_PATH]; RtlSecureZeroMemory(wildmask, MAX_PATH); wchar_t tmp[MAX_PATH]; RtlSecureZeroMemory(tmp, MAX_PATH); memcpy(tmp, wszPath, MAX_PATH); lstrcatW(tmp, L"*"); hFile = FindFirstFileW(tmp, &findData); if (hFile != INVALID_HANDLE_VALUE) { do { // is directory if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (!m_strstrW(findData.cFileName, L".") && !m_strstrW(findData.cFileName, L"..")) { wsprintfW(wildmask, L"%s%s\\", wszPath, findData.cFileName); //printf("%ls\n", wildmask); recrusive_search(wildmask); } } else // is file { wsprintfW(wildmask, L"%s%s", wszPath, findData.cFileName); printf("%ls\n", wildmask); RtlSecureZeroMemory(wildmask, MAX_PATH); } } while (FindNextFileW(hFile, &findData) != NULL); FindClose(hFile); } }
Beispiel usage:
recrusive_search(L"C:\\Users\\Administrator\\");
oder
recrusive_search(L"C:\\");
Vielleicht kann es ja einer gebrauchen ...
Greetz