怎么删除某路径下非某后缀的所有文件
比如,删除所有非 .txt 后缀的文件?
[解决办法]
- C/C++ code
BOOL GetFileFirstShowPage(CString strFolderPath){ BOOL ret = FALSE; int dFolderNum = 0; CString strDeleteFolder; WIN32_FIND_DATA FindFileData; HANDLE hFind = INVALID_HANDLE_VALUE; CString strFolderPathAll = strFolderPath + L"\\*.*"; hFind=::FindFirstFile(strFolderPathAll,& FindFileData); do { IF_BREAK(hFind == INVALID_HANDLE_VALUE); if(FindFileData.cFileName[0]=='.') //过滤本级目录和父目录 continue; if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目录,则进入此目录进行递归 { GetFileFirstShowPage(strFolderPath + FindFileData.cFileName + L"\\"); } else { CString strShortName = FindFileData.cFileName; int posEnd = strShortName.ReverseFind('.'); if (posEnd != -1) { strShortName = strShortName.Mid(posEnd + 1); } if (strShortName.CompareNoCase(L"txt") == -1) { Cstring strFilePath = strFolderPath + FindFileData.cFileName; //删除文件操作 ret = TRUE; } } }while(::FindNextFile(hFind,& FindFileData)); return ret;}
[解决办法]
最节约代码的办法就是system了,不过效率肯定一般化。也可以直接用系统API遍历目录,memcmp最后三个字符是不是.txt即可,或者Linux下用regex正则过滤一下也可以,随你。
[解决办法]
del-not-txtfile-in-test.bat:
- Perl code
for %%f in (c:\test\*.*) do (if not %%~xf==.txt del "%%f")