QQ登录

只需一步,快速开始

178上位机VC MFC批量修改文件名称

[ 复制链接 ]

178上位机VC MFC批量修改文件名称

178上位机VC MFC批量修改文件名称
178上位机VC MFC批量修改文件名称
功能展示
有规则地重命名文件夹内文件,在开发上位机时也是时有用到的功能,我们当前例程实现将指定文件夹内全部文件按时指定的新文件名加索引进行更改,效果如图,效果如图;
要点提示
文件夹的选择与获取可以用函数SHBrowseForFolder()与SHGetPathFromIDList()实现;
文件夹内文件的迭代搜索可以用CFileFind类的FindFile(),FindNextFile()等成员函数实现;
文件的重命名和移动都可以通知函数MoveFile(),也可以用rename()函数但得添加其所在头文件#include<stdio.h>
实现功能
1.新建基于对话框的应用程序
2.拖拽两编辑框ID为IDC_EDIT2,IDC_EDIT1,用于输入文件目录与新文件名;
拖拽<浏览>按钮用于浏览文件夹;
拖拽<重命名>按钮实现文件的更改;
拖拽列表控件ID为IDC_LIST1,用于显示全部要重命名的文件
  1. void CGkbc8Dlg::OnExplor()
  2. {
  3.         BROWSEINFO bif;
  4.         char buf[MAX_PATH];
  5.         ZeroMemory(buf,MAX_PATH);
  6.         bif.hwndOwner= GetSafeHwnd();
  7.         bif.iImage=0;
  8.         bif.lParam=0;
  9.         bif.lpfn=NULL;
  10.         bif.lpszTitle="Choose Folder";
  11.         bif.pidlRoot=0;
  12.         bif.pszDisplayName=buf;
  13.         bif.ulFlags=BIF_EDITBOX;
  14.         LPITEMIDLIST pList=NULL;
  15.         pList=SHBrowseForFolder(&bif);
  16.         if(NULL!=pList)
  17.         {
  18.                 SHGetPathFromIDList(pList,buf);
  19.                 SetDlgItemText(IDC_EDIT2,buf);
  20.         }
  21. }
复制代码
  1. void CGkbc8Dlg::OnRename()
  2. {
  3.         CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
  4.         pListBox->ResetContent();
  5.         pListBox->SetHorizontalExtent(1000);//增加些宽度
  6.         
  7.         CString sPathName;
  8.         GetDlgItemText(IDC_EDIT2,sPathName);
  9.         FindFile(sPathName,".");
  10.         //
  11.         CString sPath,sIndex,sFileName;
  12.         GetDlgItemText(IDC_EDIT1,sFileName);
  13.         int nCount = pListBox->GetCount();        
  14.         for(int i=0;i<nCount;i++)
  15.         {
  16.                 pListBox->GetText(i,sPath);
  17.                 sPathName=sPath.Left(sPath.ReverseFind('\\')+1);//路径
  18.                 sPathName+=sFileName;
  19.                 sIndex.Format("%d",i);//文件索引
  20.                 sPathName+=sIndex;
  21.                 sPathName+=sPath.Right(sPath.GetLength()-sPath.ReverseFind('.'));//后缀
  22.                 MoveFile(sPath,sPathName);
  23.         }
  24. }
  25. BOOL CGkbc8Dlg::FindFile(CString sDir,CString sFileName)
  26. {
  27.         CString sTemp;//路径改为\*.*形式
  28.         if(sDir.Right(1)!="\")
  29.                 sTemp.Format("%s\\*.*",sDir);
  30.         else
  31.                 sTemp.Format("%s*.*",sDir);
  32. //
  33.         CString sFindFileName;//找到的文件名
  34.         CFileFind findfile;
  35.         BOOL bfind=findfile.FindFile(sTemp);
  36.         
复制代码
  1. while(bfind)
  2.         {
  3.                 bfind=findfile.FindNextFile();
  4.                 if(findfile.IsDirectory()&&!findfile.IsDots())
  5.                 {
  6.                         FindFile(findfile.GetFilePath(),sFileName);
  7.                 }
  8.                 else if(!findfile.IsDots())
  9.                 {
  10.                         sFindFileName = findfile.GetFileName();
  11.                         sFileName.MakeUpper();
  12.                         CString sUFileName = sFileName;//大写
  13.                         sFileName.MakeLower();
  14.                         CString sLFileName = sFileName;//小写
  15.                         if(sFileName==sFindFileName||sFindFileName.Find(sLFileName)!=-1||sFindFileName.Find(sUFileName)!=-1)
  16.                         {
  17.                                 CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
  18.                                 pListBox->AddString(findfile.GetFilePath());
  19.                         }
  20.                 }
  21.         }
  22.         return bfind;
  23. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:178.上位机VC MFC批量修改文件名称.rar 
文件大小:125.63 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索