您的位置:首页 > 其它

windows操作工具或技巧集合

2017-02-20 13:46 232 查看

搜索文件内容

 在进行文件搜索时,windows 7只有右上方一个搜索框,不像XP可以进行一些高级定义,似乎没法搜索内容中包含欲搜索词的文件了,难道在这点上windows 7倒退得不如XP了?

   Windows 7没那么笨,只是为了提高大部分情况下的搜索速度,Windows 7默认是不搜索文件内容的,要修改的话其实很简单,打开资源管理器,依次单击“工具→文件夹选项→搜素”,然后勾选“始终搜索文件名和内容”,单击“确 定”,现在切换到F盘下,切换到右上角的搜索框,输入关键字:王晓明”回车后,很快就可以找到符合条件的文档了。

熟悉Windows 7的朋友会说了,平时我不想搜索文件内容,只在某个目录下会搜索内容,那可不想每次都更改这个文件夹选项。那么,有这个需求,你就可以单独考虑,因为 Windows 7默认只搜索已经有索引的目录下的文件内容,咱们可以只添加你时常需要搜素文件内容的目录。打开我的电脑,单击左侧的“库”,打开“文档库”,单击文档库 下的包含“2个位置”链接,在打开的页面中将目录F添加到文档库中就可以了,这样你就无需更改文件夹选项,进行上面的搜索就可以了。

深度遍历文件夹和文件

#include <iostream>
#include <string>
#include <io.h>
using namespace std;

//遍历当前目录下的文件夹和文件,默认是按字母顺序遍历
bool TraverseFiles(string path,int &file_num)
{
_finddata_t file_info;
string current_path=path+"/*.*"; //可以定义后面的后缀为*.exe,*.txt等来查找特定后缀的文件,*.*是通配符,匹配所有类型,路径连接符最好是左斜杠/,可跨平台
//打开文件查找句柄
int handle=_findfirst(current_path.c_str(),&file_info);
//返回值为-1则查找失败
if(-1==handle)
return false;
do
{
//判断是否子目录
string attribute;
if(file_info.attrib==_A_SUBDIR) //是目录
attribute="dir";
else
attribute="file";
//输出文件信息并计数,文件名(带后缀)、文件最后修改时间、文件字节数(文件夹显示0)、文件是否目录
cout<<file_info.name<<' '<<file_info.time_write<<' '<<file_info.size<<' '<<attribute<<endl; //获得的最后修改时间是time_t格式的长整型,需要用其他方法转成正常时间显示
file_num++;

}while(!_findnext(handle,&file_info));  //返回0则遍历完
//关闭文件句柄
_findclose(handle);
return true;
}

//深度优先递归遍历当前目录下文件夹和文件及子文件夹和文件
void DfsFolder(string path,int layer)
{
_finddata_t file_info;
string current_path=path+"/*.*"; //也可以用/*来匹配所有
int handle=_findfirst(current_path.c_str(),&file_info);
//返回值为-1则查找失败
if(-1==handle)
{
cout<<"cannot match the path"<<endl;
return;
}

do
{
//判断是否子目录
if(file_info.attrib==_A_SUBDIR)
{
//递归遍历子目录
//打印记号反映出深度层次
for(int i=0;i<layer;i++)
cout<<"--";
cout<<file_info.name<<endl;
int layer_tmp=layer;
if(strcmp(file_info.name,"..")!=0&&strcmp(file_info.name,".")!=0)  //.是当前目录,..是上层目录,必须排除掉这两种情况
DfsFolder(path+'/'+file_info.name,layer_tmp+1); //再windows下可以用\\转义分隔符,不推荐
}
else
{
//打印记号反映出深度层次
for(int i=0;i<layer;i++)
cout<<"--";
cout<<file_info.name<<endl;
}
}while(!_findnext(handle,&file_info));  //返回0则遍历完
//关闭文件句柄
_findclose(handle);
}

int main(int argc,char *argv[])
{
//遍历单个目录
int file_num=0;
if(!TraverseFiles("E:/android-ndk",file_num))  //此处路径连接符只能用/,根盘符大小写都行
cout<<"traverse files failed"<<endl;
cout<<"-------------------\n"<<"file number: "<<file_num<<endl;

//递归遍历文件夹
DfsFolder("E:/personal_profile/tinyxml",0);
return 0;
}


获取程序当前路径

#include <direct.h>
getcwd(NULL,0);
argv[0];//带有自己程序名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: