清除工程目录下多余的文件及文件夹

来源:互联网 发布:js动态生成div 编辑:程序博客网 时间:2024/05/22 05:05

可以清除一个工程目录下所有工程的多余的临时文件 以及Debug,Release文件夹,和Debug,Release文件夹下所有的内容

实现比较简单 :

#include "stdafx.h"#include<windows.h>#include<iostream>#include<string>using namespace std;void DelDirFile(char* lpPath){    char szFile[MAX_PATH] = "";    char szFind[MAX_PATH] = "";    WIN32_FIND_DATA FindFileData;    strcpy(szFind,lpPath);    strcat(szFind,"//*.*");    HANDLE hFind=::FindFirstFile(szFind,&FindFileData);    if(INVALID_HANDLE_VALUE == hFind)    {        return ;    }    while(TRUE)    {        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {            if (strcmp(FindFileData.cFileName,".svn") == 0)            {                strcpy(szFile,lpPath);                strcat(szFile,"//");                strcat(szFile,FindFileData.cFileName);                DelDirFile(szFile);                cout<<szFile<<endl;                if (!RemoveDirectory(szFile))                {                    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                    {                        FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                        SetFileAttributes(szFile,FindFileData.dwFileAttributes);                        RemoveDirectory(szFile);                    }                }                memset(szFile,0,MAX_PATH);            }            if(FindFileData.cFileName[0]!='.')            {                strcpy(szFile,lpPath);                strcat(szFile,"//");                strcat(szFile,FindFileData.cFileName);                DelDirFile(szFile);                cout<<szFile<<endl;                if (!RemoveDirectory(szFile))                {                    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                    {                        FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                        SetFileAttributes(szFile,FindFileData.dwFileAttributes);                        RemoveDirectory(szFile);                    }                }                memset(szFile,0,MAX_PATH);            }        }        else        {            strcpy(szFile,lpPath);            strcat(szFile,"//");            strcat(szFile,FindFileData.cFileName);            cout<<szFile<<endl;            if (!::DeleteFile(szFile))            {                if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                {                    FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                    SetFileAttributes(szFile,FindFileData.dwFileAttributes);                    ::DeleteFile(szFile);                }            }            memset(szFile,0,MAX_PATH);        }        if(!FindNextFile(hFind,&FindFileData))    break;//如果没有找到下一个文件,结束本次循环    }    FindClose(hFind);}void find(char * lpPath){    char szFile[MAX_PATH] = "";    char szFind[MAX_PATH] = "";    WIN32_FIND_DATA FindFileData;    strcpy(szFind,lpPath);    strcat(szFind,"//*.*");    HANDLE hFind=::FindFirstFile(szFind,&FindFileData);    if(INVALID_HANDLE_VALUE == hFind)    {        return ;    }    char szDel[MAX_PATH] = "";    while(TRUE)    {        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {            if (strcmp(FindFileData.cFileName,".svn") == 0)            {                strcpy(szFile,lpPath);                strcat(szFile,"//");                strcat(szFile,FindFileData.cFileName);                DelDirFile(szFile);                cout<<szFile<<endl;                if (!RemoveDirectory(szFile))                {                    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                    {                        FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                        SetFileAttributes(szFile,FindFileData.dwFileAttributes);                        RemoveDirectory(szFile);                    }                }                memset(szFile,0,MAX_PATH);            }            if(FindFileData.cFileName[0]!='.')            {                strcpy(szFile,lpPath);                strcat(szFile,"//");                strcat(szFile,FindFileData.cFileName);                if ((strcmp(FindFileData.cFileName,"release") == 0) || (strcmp(FindFileData.cFileName,"debug") == 0)                     || (strcmp(FindFileData.cFileName,"Debug") == 0) || (strcmp(FindFileData.cFileName,"Release") == 0))                {                    DelDirFile(szFile);                    cout<<szFile<<endl;                    if (!RemoveDirectory(szFile))                    {                        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                        {                            FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                            SetFileAttributes(szFile,FindFileData.dwFileAttributes);                            RemoveDirectory(szFile);                        }                    }                    memset(szFile,0,MAX_PATH);                }                else                {                    find(szFile);                }                            }        }        else        {            char* suffix = strrchr(FindFileData.cFileName,'.');            if (suffix != NULL)            {                if ((strcmp(suffix,".ncb") == 0) || (strcmp(suffix,".svn") == 0) || (strcmp(suffix,".user") == 0) || (strcmp(suffix,".tmp") == 0))                {                    strcpy(szDel,lpPath);                    strcat(szDel,"//");                    strcat(szDel,FindFileData.cFileName);                    cout<<szDel<<endl;                    if (!::DeleteFile(szDel))                    {                        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                        {                            FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                            SetFileAttributes(szDel,FindFileData.dwFileAttributes);                            ::DeleteFile(szDel);                        }                    }                    memset(szDel,0,MAX_PATH);                }                            }            else            {                strcpy(szDel,lpPath);                strcat(szDel,"//");                strcat(szDel,FindFileData.cFileName);                cout<<szDel<<endl;                if (!::DeleteFile(szDel))                {                    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)                    {                        FindFileData.dwFileAttributes &= ~FILE_ATTRIBUTE_READONLY;                        SetFileAttributes(szDel,FindFileData.dwFileAttributes);                        ::DeleteFile(szDel);                    }                }                memset(szDel,0,MAX_PATH);            }        }        if(!FindNextFile(hFind,&FindFileData))    break;//如果没有找到下一个文件,结束本次循环    }    FindClose(hFind);}int _tmain(int argc, _TCHAR* argv[]){    char pBuf[MAX_PATH];    GetCurrentDirectory(MAX_PATH,pBuf);    find(pBuf);    //find("D://test");    system("PAUSE");    return 0;}



0 0
原创粉丝点击