前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC批量修改文件名工具

MFC批量修改文件名工具

作者头像
立羽
发布2023-08-24 13:03:12
2140
发布2023-08-24 13:03:12
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发

1批量修改文件名描述

1.1功能描述

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

1.2所需技术

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

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

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

3.1添加文件按钮响应OnAddFile

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

代码语言:javascript
复制
/**********************************************************
函数作用:添加文件按钮响应
**********************************************************/
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

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

代码语言:javascript
复制
/**********************************************************
函数作用:拖动文件到列表控件中
**********************************************************/
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

具体思路如流程图所示。

代码语言:javascript
复制
/**********************************************************
函数作用:重命名文件
**********************************************************/
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1批量修改文件名描述
    • 1.1功能描述
      • 1.2所需技术
      • 2批量修改文件名运行流程
      • 3批量修改文件名详细设计
        • 3.1添加文件按钮响应OnAddFile
          • 3.2拖动文件到列表控件中OnDropFiles
            • 3.3批量重命名文件OnReName
            • 4批量修改文件名运行情况
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档