博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计c盘的PE文件的个数 (遍历所有文件)
阅读量:6494 次
发布时间:2019-06-24

本文共 1906 字,大约阅读时间需要 6 分钟。

PE文件有    if(tmp=="exe"||tmp=="sys"||tmp=="dll"||tmp=="ocx"||tmp=="com") 这几种格式。

代码如下

View Code
#pragma warning (disable:4786) #include 
#include
// _findfirst() _findnext() #include
//strcat() #include
//gets() puts() #include
#include
#include
//_chdir() _getcwd() #include
using namespace std; vector
PE; bool Judge(string path) { int i; if(path.size()<3)return 0; string tmp; for(i=path.size()-3;i
='A'&&tmp[i]<='Z') { tmp[i]=tmp[i]-'A'+'a'; } } if(tmp=="exe"||tmp=="sys"||tmp=="dll"||tmp=="ocx"||tmp=="com") return 1; else return 0; } void DispSubFiles()//遍历目录,包括子目录 { long handle; char path[_MAX_PATH]; struct _finddata_t t; handle=_findfirst("*",&t); if(handle==-1)//如果handle=-1,表示目录不存在 { return ; } if(t.attrib & _A_SUBDIR)//1. 判断第一个文件:如果为目录 { if(t.name[0]!='.')//如果目录非空 { _chdir(t.name); _getcwd(path,_MAX_PATH); //puts(path); DispSubFiles();//递归调用 _chdir("..");//当所有文件遍历完毕,返回上级目录 } //如果为空目录,即t.name为"."或"..",则不输出 } else//如果第一个是文件,不为目录 { _getcwd(path,_MAX_PATH); strcat(path,"\\"); strcat(path,t.name); string tmp=path; PE.push_back(path); } while(!(_findnext(handle,&t)))//2. 判断下一个文件,直至遍历所有文件 { if(t.attrib & _A_SUBDIR)//如果第一个文件为目录 { if(t.name[0]!='.')//如果目录非空 { _chdir(t.name); _getcwd(path,_MAX_PATH); //puts(path); DispSubFiles();//递归调用 _chdir("..");//当所有文件遍历完毕,返回上级目录 } //如果为空目录,即t.name为"."或"..",则不输出 } else//如果是文件,不为目录,显示文件完整路径 { _getcwd(path,_MAX_PATH);//获取文件路径 strcat(path,"\\"); strcat(path,t.name);//文件完整路径 string tmp=path; if(Judge(path)){ //puts(path);//输出路径 PE.push_back(tmp); } } } _findclose(handle); } void main() { char dirc[_MAX_PATH]; cout<<"请输入要查找的目录(如:E:\\):"<
>dirc; _chdir(dirc);//打开指定目录 DispSubFiles();//遍历所有目录及文件 printf("%d\n",PE.size()); }

统计C盘结果如下:

总文件:192006

PE文件:17386

转载于:https://www.cnblogs.com/zhxfl/archive/2011/11/11/2245143.html

你可能感兴趣的文章
MVC设计模式
查看>>
在团队项目遇到的问题及解决方法。
查看>>
springcloud demo---config-client
查看>>
Django设置联合唯一约束 -- migrate时报错处理
查看>>
Java LeetCode 1.Two Sum
查看>>
前端面试题:css相关面试题
查看>>
最长回文子序列-----动态规划
查看>>
Vue国际化实现
查看>>
设计模式:单例模式
查看>>
FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
查看>>
双网卡一般情况不能有两个网关 (转)
查看>>
xshell 远程连接Linux
查看>>
Linux计划任务及压缩归档(week2_day1)--技术流ken
查看>>
微信小程序登录 该死的官方文档TypeError: the JSON object must be str, not 'bytes'
查看>>
VMware 虚拟机克隆 CentOS 6.5 之后,网络配置问题的解决方案
查看>>
Python ( 1 ) ----- 简介
查看>>
[linux基础学习]run level
查看>>
第七周学习总结
查看>>
一步步的教你安装UChome (UChome 安装教程)
查看>>
[DeeplearningAI笔记]序列模型1.5-1.6不同类型的循环神经网络/语言模型与序列生成...
查看>>