好友
阅读权限10
听众
最后登录1970-1-1
|
某天在给一大堆文件改名字的时候, 突发奇想能否自动重命名。
代码是C,C++混合的. 没有界面, 通过配置文件来配置的。
核心思想是, 利用 _finddata_t 这个结构体及两个对应的函数来枚举指定目录下的所有指定后缀的文件。
然后自动编号将其重命名.
核心代码:
[C++] 纯文本查看 复制代码 /**
* 枚举文件夹下所有文件并将之重命名
* @param char* rootDir 文件目录
* @param char* searchName 通配符
* @param char* extName 文件后缀
* @param int cntFileNo 当前编号
*/
int setFileNameBySearch(char* rootDir, char* searchName, char* extName, int cntFileNo)
{
// 文件句柄
long file_handle;
// 文件信息结构体
struct _finddata_t fileinfo;
file_handle = _findfirst(searchName, &fileinfo);
if(file_handle == -1) return cntFileNo;
char file_tmp_name[255] = "";
char file_cnt_name[255] = "";
strcpy(file_tmp_name, rootDir);
strcpy(file_cnt_name, rootDir);
strcat(file_cnt_name, fileinfo.name);
int tmp = cntFileNo, j;
char tmp_pic[255] = "";
if(tmp >= 10)
{
int tmp_len = 0;
while(tmp)
{
tmp_pic[tmp_len ++] = (tmp % 10 + '0');
tmp /= 10;
}
for(j = 0; j <= (tmp_len - 1) / 2; j ++)
{
char tmp_ch = tmp_pic[j];
tmp_pic[j] = tmp_pic[tmp_len - 1 - j];
tmp_pic[tmp_len - 1 - j] = tmp_ch;
}
}
else
tmp_pic[0] = tmp + '0';
// 拼接文件名
strcat(tmp_pic, extName);
strcat(file_tmp_name, tmp_pic);
// 复制文件
rename(file_cnt_name, file_tmp_name);
cntFileNo += 1;
while(!_findnext(file_handle, &fileinfo))
{
tmp =cntFileNo;
memset(tmp_pic, 0, sizeof(tmp_pic));
memset(file_tmp_name, 0, sizeof(file_tmp_name));
memset(file_cnt_name, 0, sizeof(file_cnt_name));
strcpy(file_tmp_name, rootDir);
strcpy(file_cnt_name, rootDir);
strcat(file_cnt_name, fileinfo.name);
if(tmp >= 10)
{
int tmp_len = 0;
while(tmp)
{
tmp_pic[tmp_len ++] = (tmp % 10 + '0');
tmp /= 10;
}
for(j = 0; j <= (tmp_len - 1) / 2; j ++)
{
char tmp_ch = tmp_pic[j];
tmp_pic[j] = tmp_pic[tmp_len - 1 - j];
tmp_pic[tmp_len - 1 - j] = tmp_ch;
}
}
else
tmp_pic[0] = tmp + '0';
// 拼接文件名
strcat(tmp_pic, extName);
strcat(file_tmp_name, tmp_pic);
// 复制文件
rename(file_cnt_name, file_tmp_name);
cntFileNo += 1;
}
_findclose(file_handle);
return cntFileNo;
}
写的不好还请大佬们轻喷, 可以自己定制重命名的文件名规则。
虽然功能不是很强大, 甚至有点鸡肋,但是都是在学习中成长么不是
|
-
-
自动重命名.rar
1.74 KB, 下载次数: 44, 下载积分: 吾爱币 -1 CB
源码及配置文件
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|