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

How to use DeleteFile with wildcard in c++

本文关键字:通配符 DeleteFile 何使用 c++      更新时间:2023-10-16

如何使用DeleteFile通配符?

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

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);
}

DeleteFile()不支持通配符

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

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

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