MFC批量修改文件名工具

1批量修改文件名描述

1.1功能描述

批量修改同一文件夹下文件名字,可以定义一个新名字,后面接着文件从0开始的序号。

1.2所需技术

CFileDialog,CString方法操作得到所需,rename

2批量修改文件名运行流程

3批量修改文件名详细设计

3.1添加文件按钮响应OnAddFile

按下“添加文件”按钮后,打开一个文件对话框objFileDlg。但是要设置objFileDlg最大文件名缓冲区。然后获得第一个文件的起始位置,依次把全部的文件完整名添加到列表控件中,这里列表控件使用升序排序功能。

/**********************************************************
函数作用:添加文件按钮响应
**********************************************************/
void CRenameMFileDlg::OnAddFile() 
{
	CFileDialog objFileDlg(TRUE,"文件","*.*",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|
		OFN_ALLOWMULTISELECT,"FILE(*.*)|*.*|jpeg(*.jpg)|*.jpg|文本(*.txt)|*.txt||",NULL);
	char fileBuffer[5000] = {0};
	//设定一个文件名缓存,因为CFileDialog内置的文件名缓存长度只有200,但是很多时候,文件的路径远大于这个数,为了保险起见,所以要自己设定一个文件名缓存
	objFileDlg.m_ofn.lpstrFile = fileBuffer;
	//设定缓存长度
	objFileDlg.m_ofn.nMaxFile = 5000;
	if(objFileDlg.DoModal()==IDOK)
	{
		POSITION pos = objFileDlg.GetStartPosition();
        while(pos != NULL)
        {
			CString pathname=objFileDlg.GetNextPathName(pos);
			m_ctrFileList.InsertItem(m_ctrFileList.GetItemCount(),pathname.GetBuffer(0));
		}
	}	
}

3.2拖动文件到列表控件中OnDropFiles

首先获得拖动文件的数目,然后依次把文件完整名添加到列表控件中。

/**********************************************************
函数作用:拖动文件到列表控件中
**********************************************************/
void CRenameMFileDlg::OnDropFiles(HDROP hDropInfo) 
{
	// TODO: Add your message handler code here and/or call default
	int iDropCount=DragQueryFile(hDropInfo,-1,NULL,0);//取得被拖动文件的数目
	for(int i=0;i< iDropCount;i++)
	{
		char sCompleteName[MAX_PATH];
		DragQueryFile(hDropInfo,i,sCompleteName,MAX_PATH);//获得拖曳的第i个文件的文件名
		m_ctrFileList.InsertItem(m_ctrFileList.GetItemCount(),sCompleteName);
	} 
	DragFinish(hDropInfo);  //拖放结束后,释放内存
	CDialog::OnDropFiles(hDropInfo);
}

3.3批量重命名文件OnReName

具体思路如流程图所示。

/**********************************************************
函数作用:重命名文件
**********************************************************/
void CRenameMFileDlg::OnReName() 
{
//此处省略很多代码
	for(int i=0;i<iSum;i++)
	{	
		CString sInitCompleteName = m_ctrFileList.GetItemText(i,0);//得到文件初始完整路径和名
		CString sCompleteTmp = sInitCompleteName;
		int iPointPos = sCompleteTmp.ReverseFind('.');//找到点在字符串中的位置
		int iFormatLen = sCompleteTmp.GetLength() - iPointPos;//求出格式串的长度,包含“.”
		CString sFormat = sCompleteTmp.Right(iFormatLen);//得到文件的格式
		int iSlashPos = sCompleteTmp.ReverseFind('\\');//找到最后一个斜杠
		CString sPath = sCompleteTmp.Left(iSlashPos+1);//包含斜杠
		CString sNewPathAndName;
		sNewPathAndName.Format("%s%s%d%s",sPath,sNewName,i,sFormat);
		::rename(sInitCompleteName,sNewPathAndName);
	}
//此处省略很多代码
}

4批量修改文件名运行情况


源码下载

http://download.csdn.net/detail/luoyikun/9021535

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四夕立羽

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值