对指定文件夹及其子文件夹下面的某一类格式(.tif)的文件进行重命名

时间:2021-11-01 09:56:05

要求:对指定文件夹及其子文件夹下面的指定格式的文件进行重命名

实现代码:

void Picsort(string filename){

/*string filename = R"(D:\天文台汇总\fast自测数据\matlab\新建文件夹)";*/
ofstream fout;
int count = 0;
_finddata_t fileInfo;
string Filename = filename + "\\*.tif";
long handle = _findfirst(Filename.c_str(), &fileInfo);
if (handle == -1){
cerr << "can not match the folder path" << endl;
exit(-1);
}


do{
//如果是目录,迭代之
if (fileInfo.attrib& _A_SUBDIR){
if ((strcmp(fileInfo.name, ".") != 0) && (strcmp(fileInfo.name, ". .") != 0)){
string newFilename = filename + "\\" + fileInfo.name;
Picsort(newFilename);
}
}
//如果不是,重命名
else{
string new_name = filename + "\\" + to_string(++count) + ".tif";
string oldname = filename + "\\" + fileInfo.name;
rename(oldname.c_str(), new_name.c_str());
}
}
// do{
// string new_name = filename + "\\" + to_string(++count) + ".tif";
// string oldname = filename+"\\"+fileInfo.name; 
// rename(oldname.c_str(),new_name.c_str());
// }


while (_findnext(handle, &fileInfo) == 0);
_findclose(handle);

}

基本结构就跟遍历文件夹类似,需要对遍历出来的内容做指定的修改,即在else{}里面添加相应的代码就好了!这个程序有个bug,就是在对文件夹下面的子文件夹里面的.tif照片进行重命名时候,需要将子文件的名字改为带有.tif后缀的子文件夹名才能对里面的图片进行重命名!(有空来改)

转自http://blog.csdn.net/lgfun/article/details/53995151