windows操作工具或技巧集合

来源:互联网 发布:数学作图软件 编辑:程序博客网 时间:2024/06/03 23:03

搜索文件内容

 在进行文件搜索时,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];//带有自己程序名
0 0
原创粉丝点击