吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6434|回复: 16
收起左侧

[C&C++ 转载] C++批量修改文件名, 大佬勿喷

[复制链接]
dydhyh 发表于 2016-12-7 10:41
某天在给一大堆文件改名字的时候, 突发奇想能否自动重命名。
代码是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

源码及配置文件

免费评分

参与人数 2热心值 +2 收起 理由
上帝也幽默 + 1 用心讨论,共获提升!
颠峰娱乐 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| dydhyh 发表于 2016-12-7 14:38
首席鉴淫师 发表于 2016-12-7 12:23
用批处理的化也可以啊

之前也用过, 但是想用C写一个, 感觉这样比批处理会更好一点, 也方便一点点^_^
批处理不是很会  抱歉~
 楼主| dydhyh 发表于 2016-12-7 14:39
GreyChroma 发表于 2016-12-7 12:28
恩,不错,这个好多了,谢谢楼主贡献,用心讨论,共获提升

^_^ 谢谢
Henrie 发表于 2016-12-7 10:53 来自手机
dxdeng 发表于 2016-12-7 11:28
可以做一个小程序了
啊哈啊 发表于 2016-12-7 11:43
不错的工具。
神座.出流 发表于 2016-12-7 11:56
感谢分享
HYY359818976 发表于 2016-12-7 12:14
感谢分享.................
首席鉴淫师 发表于 2016-12-7 12:23
用批处理的化也可以啊
GreyChroma 发表于 2016-12-7 12:28
恩,不错,这个好多了,谢谢楼主贡献,用心讨论,共获提升
嗨独往 发表于 2016-12-7 12:53
看不懂。。。
cwy121 发表于 2016-12-7 13:44
老鸟都是这么过来的,哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表