如何将DeleteFile与通配符一起使用?
所以c:\myFolder\a*.txt
会删除a123.txt
和a5555.txt
,但不会删除b123.txt
答案 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);