欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-25 14:05:23
...

文章涉及到StringAbout::开头的函数具体实现参考:string与Cstring字符串类型转换和其他操作总结
CProcessFile::开头的函数实现参考:文件读写操作工具类CProcessFile
MCountFile函数参考:MCountFile类,统计指定文件夹下包含某个字段文件数目
批量替换一个文件中的文件名,例如将文件夹中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));
		
	}

}

 

相关标签: s