windows操作工具或技巧集合

搜索文件内容

 在进行文件搜索时,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];//带有自己程序名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值