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

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

}

清除工程目录下多余文件和文件夹相关推荐

  1. c#_将文件导入到工程目录下

    Demo介绍 我先说明我这段Demo写出来的初衷是用于我们项目的一个要求: 甲方要求:客户只需要把文件丢进一个文件夹然后,再扫描该文件夹下所有后缀为.dxf的文件用于后续操作: 乙方操作:我的解决方案 ...

  2. VS工程目录下各文件的含义以及如何打开源文件进行编译

    一.创建工程产生的各个文件都你知道是什么用的吗? 解决方案与工程 在这之前先了解一个概念:解决方案与工程. **解决方案(Solution):**一个大型项目的整体的工作环境: **工程 (Proje ...

  3. Visual Studio 2010工程目录下的ipch文件夹和.sdf文件

    使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量, ...

  4. VS工程目录下的ipch文件夹和.sdf文件

    Visual Studio 2010工程目录下的ipch文件夹和.sdf文件 - web8 - 博客园 http://www.cnblogs.com/web100/archive/2012/12/21 ...

  5. gen文件下有两个R.java_gen目录无法更新,或者gen目录下的R.JAVA文件无法生成

    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...

  6. Python:打印目录下最大的十个文件

    打印指定目录下最大的十个文件,并按倒序输出: vim top10.py #!/usr/bin/env python import os import sys import operator def g ...

  7. 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文件) 参考文章: ...

  8. python打开指定文件-python打包压缩、读取指定目录下的指定类型文件

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...

  9. 批量移动某目录下某类型的文件到指定的目录下

    问题描述:由于目录下存在多个文件"***.so"且散布在不同的层级目录下,一个个去删除或者移动非常费力不讨好.于是想到有没有技巧可以批量移动,就想到了xargs参数,命令如下,且实 ...

最新文章

  1. 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
  2. 动态数组怎么定义_动态规划最长回文子序列
  3. 集合的定义与并查操作(C语言)
  4. Scratc3.0作品转化成exe文件
  5. 安师大计算机安全网络,计信学院成功举行网络与信息安全安徽省重点实验室2020年度学术年会...
  6. easyui使用心得
  7. c#按照指定长度切分字符串
  8. 程序理解与程序员的未来
  9. 用C++ TR1 生成随机数
  10. 通过Web.config中的configSections配置自己系统的全局常量
  11. 【优化调度】基于matlab粒子群算法求解水火电调度优化问题【含Matlab源码 1181期】
  12. 使用Visual Studio 2013编写Windows程序
  13. pg数据库的一些问题
  14. C/S架构的优点和缺点
  15. sql常用语句(mysql)
  16. GraphQL(四):GraphQL工程化实践
  17. Elasticsearch安装操作步骤
  18. 身高算法(取身高差最小,身高最高的两个人)
  19. 腾讯2018春招实习生和秋招面试问题
  20. python计算最大公约数函数_python如何求解两数的最大公约数

热门文章

  1. 数据库设计中char与varchar类型的区别
  2. 手写简化版printf函数
  3. LaunchImage命名与AppIcon命名(ios设置 启动图片和AppIcon图片)
  4. 【转】oracle内置函数 trunc 使用
  5. linux之pkill命令
  6. RabbitMQ学习总结(一)——基础概念详细介绍
  7. AD RMS高可用(四)添加rms成员服务器
  8. 无需共享存储发布高性能的虚拟桌面
  9. JAVA自定义Mybatis注解
  10. Codis安装部署全架构