批量替换一个文件中的文件名,例如将文件夹中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));
}
}
上一篇: 数据结构之深搜之六角填数问题
下一篇: 重载与重写