TA的每日心情 | 开心 2024-02-17 18:16 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
管理员
这里没有广告...
- 积分
- 10709
|
直接上代码,可直接运行亲测有效,使用SHFileOperation函数:
- #include "stdafx.h"
- #include <windows.h>
- int _tmain(int argc, _TCHAR* argv[])
- {
- LPTSTR delFileName = L"c:/test/test*.txt";
- SHFILEOPSTRUCT FileOp;
- ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
- FileOp.fFlags = FOF_NO_UI;
- FileOp.wFunc = FO_DELETE;
- FileOp.pFrom = delFileName;
- FileOp.pTo = NULL;
- if (SHFileOperation(&FileOp) != 0)
- printf("删除文件:%S失败(Error:%d)\n", delFileName, GetLastError());
- return 0;
- }
复制代码 经过测试,文件路径必须为绝对路径,相对路径会操作失败。
获取当前路径拼上相对路径代码如下:
- char szDelPath[MAX_PATH + 1] = { 0 };
- GetCurrentDirectory(MAX_PATH, szDelPath);
- CString delFileName;
- delFileName.Format("%s\\test_*.xml", szDelPath);
复制代码
--------------------------------------------
补充:
不过SHFileOperation方法有时不起作用,用起来结果飘忽不定,详见:http://bbs.csdn.net/topics/390691058
路径末尾加上'\0'也一样,笔者亲测,删除有时成功有时失败。
改用C++的FindNextFile,支持 * 通配符查找文件,核心代码如下:
- WIN32_FIND_DATA FindFileData;
- char szCurPath[MAX_PATH + 1] = { 0 };
- GetCurrentDirectory(MAX_PATH, szCurPath);
- CString findFileName;
- findFileName.Format("%stest*.txt", szCurPath);
- HANDLE hFind = ::FindFirstFile(findFileName, &FindFileData);
- if(INVALID_HANDLE_VALUE != hFind)
- {
- do {
- findFileName.Format("%s%s", szCurPath, FindFileData.cFileName);
- DeleteFile(findFileName);
- } while(FindNextFile(hFind, &FindFileData));
- FindClose(hFind);
- }
复制代码
|
|