要求:对指定文件夹及其子文件夹下面的指定格式的文件进行重命名
实现代码:
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