当前位置: 源码素材网 » VC++教程 » 详情页

VC++ 文件批量重命名代码

  •   时间:2019-01-08
  • 概述:重命名 批量改名

VC++批量重命名的参考代码,批量修改文件名的代码,这个是带有显示列表的,用户界面较好些,后附有完整源码链接:

HCURSOR CRenameFilesDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}
void CRenameFilesDlg::OnButselect()
{
	m_List.DeleteAllItems();//清空列表
	CString ReturnPach;//字符串变量
	TCHAR szPath[_MAX_PATH];//保存路径变量
	BROWSEINFO bi;// BROWSEINFO结构变量
	bi.hwndOwner      = NULL; //HWND句柄
	bi.pidlRoot       = NULL; //默认值为NULL
	bi.lpszTitle      = _T("文件浏览对话框"); //对话框标题
	bi.pszDisplayName = szPath; //选择文件夹路径
	bi.ulFlags        = BIF_RETURNONLYFSDIRS;//标记
	bi.lpfn           = NULL;//默认值为NULL
	bi.lParam         = NULL;//回调消息
	LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);  //显示文件浏览对话框
	if (pItemIDList)
	{
		if (SHGetPathFromIDList(pItemIDList,szPath)) //判断是否获得文件夹路径
			ReturnPach = szPath;//获得文件夹路径
	}
	else
	{
		ReturnPach = "";//文件夹路径为空
	}
	CFileFind file;
	if(ReturnPach.Right(1) != "\\")//判断结尾是否为"\"
		ReturnPach += "\\*.*";//设置通配符
	else
		ReturnPach += "*.*";
	BOOL bf;
	bf = file.FindFile(ReturnPach);//查找文件
	int i=1;
	while (bf)
	{
		bf = file.FindNextFile();//寻找下一个文件
		if (!file.IsDots() && !file.IsDirectory())//如果不是文件夹
		{
			CString strName = file.GetFilePath();//获得文件路径
			m_List.InsertItem(m_List.GetItemCount(),strName);//插入到列表中
			i++;
		}
	}
}
void CRenameFilesDlg::OnButrename()
{
	CString name;
	m_Name.GetWindowText(name);
	int count = 0;
	for (int i=0;i<m_List.GetItemCount();i++)			//按列表项循环
	{
		CString path = m_List.GetItemText(i,0);		//获得文件路径
		int lindex    = path.ReverseFind('\\');		//反向查找'\'
		int rindex  = path.ReverseFind('.');			//反向查找'.'
		CString left,right;
		left = path.Left(lindex+1);			//获取文件名坐车字符串
		right = path.Right(path.GetLength()-rindex);	//获得扩展名
		CString newname;
		newname.Format("%s%s%03d%s",left,name,i+1,right);	//设置重命名后的文件名
		int ret = rename(path,newname);	//重命名文件
		count += ret;
	}
	if(!count)
	{
		MessageBox("已完成重命名文件");
		m_List.DeleteAllItems();
	}
}

    相关声明:

      若“VC++ 文件批量重命名代码”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。