首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何删除某路径下非某后缀的所有文件

2012-04-15 
怎么删除某路径下非某后缀的所有文件比如,删除所有非 .txt 后缀的文件?[解决办法]C/C++ codeBOOL GetFileF

怎么删除某路径下非某后缀的所有文件
比如,删除所有非 .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") 

热点排行