如何在c ++中使用带有通配符的DeleteFile

时间:2015-08-17 22:12:08

标签: c++ winapi

如何将DeleteFile与通配符一起使用?

所以c:\myFolder\a*.txt会删除a123.txta5555.txt,但不会删除b123.txt

2 个答案:

答案 0 :(得分:7)

WIN32_FIND_DATAW fd;
HANDLE hFind = FindFirstFileW(L"C:\\myFolder\\a*.txt", &fd);
if (hFind != INVALID_HANDLE_VALUE)
{
    do
    {
        DeleteFileW((wstring(L"C:\\myFolder\\") + fd.cFileName).c_str());
    } while (FindNextFileW(hFind, &fd));
    FindClose(hFind);
}

答案 1 :(得分:4)

DeleteFile()不支持通配符。

@ user1438233向您展示了如何在DeleteFile()循环中使用FindFirstFile()来使用通配符搜索文件。

另一种选择是使用SHFileOperation()并让Shell为您处理通配符:

SHFILEOPSTRUCTW op = {0};
op.wFunc = FO_DELETE;
op.pFrom = L"C:\\myFolder\\a*.txt\0";
op.fFlags = FOF_FILESONLY | FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NORECURSION;

SHFileOperationW(&op);