清除工程目录下多余文件和文件夹
清除工程目录下多余文件和文件夹
可以清除一个工程目录下所有工程的多余的临时文件以及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;
}
清除工程目录下多余文件和文件夹相关推荐
- c#_将文件导入到工程目录下
Demo介绍 我先说明我这段Demo写出来的初衷是用于我们项目的一个要求: 甲方要求:客户只需要把文件丢进一个文件夹然后,再扫描该文件夹下所有后缀为.dxf的文件用于后续操作: 乙方操作:我的解决方案 ...
- VS工程目录下各文件的含义以及如何打开源文件进行编译
一.创建工程产生的各个文件都你知道是什么用的吗? 解决方案与工程 在这之前先了解一个概念:解决方案与工程. **解决方案(Solution):**一个大型项目的整体的工作环境: **工程 (Proje ...
- Visual Studio 2010工程目录下的ipch文件夹和.sdf文件
使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量, ...
- VS工程目录下的ipch文件夹和.sdf文件
Visual Studio 2010工程目录下的ipch文件夹和.sdf文件 - web8 - 博客园 http://www.cnblogs.com/web100/archive/2012/12/21 ...
- gen文件下有两个R.java_gen目录无法更新,或者gen目录下的R.JAVA文件无法生成
gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...
- Python:打印目录下最大的十个文件
打印指定目录下最大的十个文件,并按倒序输出: vim top10.py #!/usr/bin/env python import os import sys import operator def g ...
- Maven出现User setting file does not exist ...\.m2\setting.xml的问题解决(同时也解决用户.m2目录下无setting.xml文件)
Maven出现User setting file does not exist ...\.m2\setting.xml的问题解决(同时也解决用户.m2目录下无setting.xml文件) 参考文章: ...
- python打开指定文件-python打包压缩、读取指定目录下的指定类型文件
下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...
- 批量移动某目录下某类型的文件到指定的目录下
问题描述:由于目录下存在多个文件"***.so"且散布在不同的层级目录下,一个个去删除或者移动非常费力不讨好.于是想到有没有技巧可以批量移动,就想到了xargs参数,命令如下,且实 ...
最新文章
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 动态数组怎么定义_动态规划最长回文子序列
- 集合的定义与并查操作(C语言)
- Scratc3.0作品转化成exe文件
- 安师大计算机安全网络,计信学院成功举行网络与信息安全安徽省重点实验室2020年度学术年会...
- easyui使用心得
- c#按照指定长度切分字符串
- 程序理解与程序员的未来
- 用C++ TR1 生成随机数
- 通过Web.config中的configSections配置自己系统的全局常量
- 【优化调度】基于matlab粒子群算法求解水火电调度优化问题【含Matlab源码 1181期】
- 使用Visual Studio 2013编写Windows程序
- pg数据库的一些问题
- C/S架构的优点和缺点
- sql常用语句(mysql)
- GraphQL(四):GraphQL工程化实践
- Elasticsearch安装操作步骤
- 身高算法(取身高差最小,身高最高的两个人)
- 腾讯2018春招实习生和秋招面试问题
- python计算最大公约数函数_python如何求解两数的最大公约数