功能和使用介绍:
清理VC和BCB项目生成的临时文件,方便打包,备份等。使用很方便,采用ATL制作,注册dll之后,右键点击一个文件夹,选择“VC和BCB项目清理工具”菜单,会把此文件夹之下的所有临时文件列出来,再点击“删除”按钮即可。下载地址:
http://download.csdn.net/detail/softman_2000/4042262
清理VC和BCB项目生成的临时文件,方便打包,备份等。使用很方便,采用ATL制作,注册dll之后,右键点击一个文件夹,选择“VC和BCB项目清理工具”菜单,会把此文件夹之下的所有临时文件列出来,再点击“删除”按钮即可。下载地址:
http://download.csdn.net/detail/softman_2000/4042262
解决方案 »
- 以VS2005,2008为教材的MFC教程,请推荐一下
- 如何更改多界面显示的前后顺序了?
- 插入在Powerpoint中的activex如何获得消息
- 为什么vc7自动创建代码中多了一行:extern CMyApp theApp; ??
- 高质量C++/C编程指南 (打包下载)
- 高分求联通的短信收发服务程序,就是基于SGIP协议的那种东东,头疼死我了,老板逼着要,我一点办法都没有了,拜托那位大哥做过的,代码借用一
- 在左右分割视图中 怎样实现在左视图 获取右视图的指什
- 很菜的问题,,请各位大哥解决
- 有关WH_CALLWNDPROCRET钩子。钩子能钩上,但不知如何取得返回的lParam指针指向的内容。
- 如何将类型库文件(TLB)作为一个资源,包含在组件DLL文件中.
- 请教从ACCESS数据库中导出图片的问题
- 请问如何实现?CListView问题
#include <windows.h>
#include <tchar.h>
#include <Shlwapi.h>
#pragma comment(lib,"Shlwapi.lib")TCHAR* szSuffix[] = {TEXT(".suo"),TEXT(".ncb"),TEXT(".user"),TEXT(".pdb"),TEXT(".obj"),TEXT("Readme.txt"),TEXT("ReadMe.txt"),TEXT(".aps"),TEXT(".idb"),
TEXT(".ilk"),TEXT(".plg"),TEXT(".opt"),TEXT(".sbr"),TEXT(".pch"),TEXT(".sdf"),TEXT(".netmodule"),TEXT(".db"),TEXT(".bsc"),TEXT(".old"),TEXT("PREfast"),
TEXT("buildchk"),TEXT("BuildLog"),TEXT("buildfre"),TEXT("prefast")};TCHAR* szDir[] = {TEXT("\\.svn"),TEXT("\\debug"),TEXT("\\Debug"),TEXT("\\Release"),TEXT("\\release"),TEXT("\\ipch"),TEXT("\\Bin"),TEXT("\\Obj"),
TEXT("objchk"),TEXT("objfre")};TCHAR szLongPath [MAX_PATH] = TEXT("");//本程序所在文件夹路径
TCHAR szLongFile [MAX_PATH] = TEXT("");//本程序自身路径//判断是不是可以删除的后缀名
BOOL CheckSuffix(LPCTSTR lpFilePath)
{
LPCTSTR tmp = NULL;
int i;
for(i = 0; i < ( sizeof( szSuffix ) / sizeof( TCHAR* ) ); i++ )
{
tmp = _tcsstr(lpFilePath,szSuffix[i]);
if (tmp != NULL)
{
return TRUE;
}
}
return FALSE;}//判断是不是可以删除的文件夹
//从后面开始判断
BOOL CheckDiretory(LPCTSTR lpDirPath)
{
LPCTSTR tmp = NULL;
int i;
for( i = 0; i < ( sizeof( szDir ) / sizeof( TCHAR* ) ); i++ )
{
tmp = _tcsstr(lpDirPath,szDir[i]);
if (tmp != NULL)
{
return TRUE;
}
}
return FALSE;
}//删除文件夹和文件
BOOL DelFileToRecycle(LPCTSTR lpSourceFile)
{
SHFILEOPSTRUCT shFile;
TCHAR FilepathName[MAX_PATH];
int len = 0;
_stprintf_s(FilepathName,MAX_PATH,TEXT("%s"),lpSourceFile); len = lstrlen(FilepathName);
FilepathName[len] = '\0';
FilepathName[len+1] = '\0'; ZeroMemory(&shFile,sizeof(shFile));
shFile.pFrom = FilepathName;
shFile.wFunc = FO_DELETE;
//静默,保留撤销(回收站),取消警告
shFile.fFlags =FOF_SILENT|FOF_ALLOWUNDO|FOF_NOCONFIRMATION;
if (SHFileOperation(&shFile) != 0 )
{
return FALSE;
}
return TRUE;
}//获取本清理程序所在的路径
void GetSelfPath()
{
TCHAR szbufPath [MAX_PATH] = TEXT("");
LPCTSTR lpTemp = NULL;
GetModuleFileName(NULL,szbufPath,MAX_PATH);
GetLongPathName(szbufPath,szLongPath,MAX_PATH);
GetLongPathName(szbufPath,szLongFile,MAX_PATH);
lpTemp = _tcsrchr(szLongPath,'\\');
*_tcsstr(szLongPath,lpTemp) = 0;
}//搜索并且删除垃圾文件
void SearchAndDelete(LPTSTR lpCurrentDir)
{
WIN32_FIND_DATA FindFileData;
HANDLE hListFile;
TCHAR szFullPath[MAX_PATH] = TEXT("");
TCHAR szFilePath[MAX_PATH] = TEXT("");
BOOL bIsRootPath = FALSE; lstrcpy(szFilePath, lpCurrentDir);
lstrcat(szFilePath, TEXT("\\*")); hListFile = FindFirstFile(szFilePath,&FindFileData);
if(hListFile != INVALID_HANDLE_VALUE)
{
do
{
if(lstrcmp(FindFileData.cFileName,TEXT(".")) == 0||lstrcmp(FindFileData.cFileName,TEXT("..")) == 0)
{
continue;
} bIsRootPath = PathIsRoot(lpCurrentDir);
if (TRUE == bIsRootPath)
{
_stprintf_s(szFullPath,MAX_PATH,TEXT("%s%s"),lpCurrentDir,FindFileData.cFileName);
}
else
{
_stprintf_s(szFullPath,MAX_PATH,TEXT("%s\\%s"),lpCurrentDir,FindFileData.cFileName);
} if(FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
if (CheckDiretory(szFullPath))
{
DelFileToRecycle(szFullPath);
}
SearchAndDelete(szFullPath);
}
else
{
//这里删除文件
if (lstrcmp(szLongFile,szFullPath) != 0)//自身跳过
{
if (CheckSuffix(szFullPath))
{
DelFileToRecycle(szFullPath);
}
}
}
}
while(FindNextFile(hListFile, &FindFileData));
}
FindClose(hListFile);
}int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
{
GetSelfPath();
SearchAndDelete(szLongPath);
return 0;
}
我是这样做的,然后编译放到要删除的文件夹下面