批量替换一个文件中的文件名,例如将文件夹中s**_abnormal.jpg文件修改为s**_abnor.jpg

文章涉及到StringAbout::开头的函数具体实现参考:string与Cstring字符串类型转换和其他操作总结
CProcessFile::开头的函数实现参考:文件读写操作工具类CProcessFile
MCountFile函数参考:MCountFile类,统计指定文件夹下包含某个字段文件数目

本文基于查找小工具(动手实现查找小工具:优化版FindEverything)优化,在此基础上,批量替换一个文件中的文件名,例如将文件夹中s**_abnormal.jpg文件修改为s**_abnor.jpg
实现代码如下:

void CFindEverythingDlg::OnBnClickedButton2()
{
	// TODO: Add your control notification handler code here
	MyCountFile m_CountFile;
	vector<string> mvfiles,mvPaths,mvfiles1;
	CString findstr;
	GetDlgItem(IDC_EDIT2)->GetWindowTextW(findstr);
	m_CountFile.GetAndPrintFileNames(StringAbout::toString(m_path),mvPaths,StringAbout::toString(findstr));
	for (int i=0;i<mvPaths.size();i++)
	{
		string path=mvPaths[i];

		string mfile=StringAbout::GetFileFromPathString(path);		
		int pos=mfile.find("_");
		
		//替换文件名和修改文件路径
		string pre,post,mfile1,path1;
		pre=mfile.substr(0,pos+6);
		pos=mfile.find(".");
		post=mfile.substr(pos,mfile.length()-pos);
		mfile1=pre+post;

		pos=path.rfind("\\");
		path1=path.substr(0,pos+1);		
		path1=path1+mfile1;
		
		int m_iImgDataW=500;
		int m_iImgDataH=860;
		
		OCTDATA * pOctdata = new OCTDATA;
		memset(pOctdata,0,sizeof(OCTDATA));
		//保存新文件
		BYTE *pdata = new BYTE[m_iImgDataW * m_iImgDataH *3];


		DWORD dwReadBytes = CProcessFile::ReadBinaryFile(&(pOctdata->_pbyOCTDataBuffer[0]),
			m_iImgDataW * m_iImgDataH*3, StringAbout::toCString(path));

		for (int i=0;i<m_iImgDataH*m_iImgDataW*3;i++)
		{
			pdata[i] = (int)(pOctdata->_pbyOCTDataBuffer[i]);
		}

		SaveBMP(StringAbout::toCString(path1),pdata,m_iImgDataW,m_iImgDataH,3);
		CProcessFile::SaveBitmapToFile(pdata, 24,StringAbout::toCString(path1), m_iImgDataW,m_iImgDataH);
		//删除原文件
		DeleteFile(StringAbout::toCString(path));
		
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

haimianjie2012

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

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

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

打赏作者

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

抵扣说明:

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

余额充值