【发布时间】:2022-01-13 01:47:20
【问题描述】:
我是 C++ 和 winapi 的新手,目前正在做一个项目来创建一个 winapi 应用程序,该应用程序具有将一个驱动器中的所有文件 .doc 和 .docx 复制到另一个文件夹的功能。 以下是我所做的,它似乎不起作用:
谁能告诉我如何正确地做到这一点?
void cc(wstring inputstr) {
TCHAR sizeDir[MAX_PATH];
wstring search = inputstr + TEXT("\\*");
wcscpy_s(sizeDir, MAX_PATH, search.c_str());
WIN32_FIND_DATA findfiledata;
HANDLE Find = FindFirstFile(sizeDir, &findfiledata);
do {
if (findfiledata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (!wcscmp(findfiledata.cFileName, TEXT(".")) || !wcscmp(findfiledata.cFileName, TEXT(".."))) continue;
//checking folder or file
wstring dirfolder = inputstr + TEXT("\\") + findfiledata.cFileName;
cc(dirfolder);
}
else {
wstring FileSearch = findfiledata.cFileName;
//.doc or docx
if (!wcscmp(FileSearch.c_str(), L".doc") || !wcscmp(FileSearch.c_str(), L".docx")) {
TCHAR src[256] = L"D:\\test\\";
wstring dirsrc = inputstr + TEXT("\\") + findfiledata.cFileName;
_tprintf(TEXT(" %s \n"), dirsrc.c_str());
wcscat_s(src, findfiledata.cFileName);
CopyFile(dirsrc.c_str(), src, TRUE);
}
}
} while (FindNextFile(Find, &findfiledata) != 0);
FindClose(Find);
}
当我调用函数时,这里的inputstr 是我想要搜索的驱动器,例如cc(L"D:");
【问题讨论】:
-
呃...
find ... -exec怎么了? -
这没什么问题,但这是一项要求我编写具有上述功能的 winapi 应用程序的任务,目前我一直在弄清楚为什么它不能正常工作:(跨度>
-
如果可以使用 C++17,这种事情现在实际上更容易使用 std::filesystem 完成