可以清除一个工程目录下所有工程的多余的临时文件 以及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;
}