VC实现实用文件按指定名字批量改名

前几天有哥们工作需要用到按指定文件名批量改名,在网上找了一下一般都不好用,也难的去找。自己用vc实现了一个简单程序完成这个任务,实现还是很简单,大致流程就是把图片路径读取,然在导入批量的文件名或者手动输入也可然后进行改名。

简单程序界面:


导入图片


批量导入改的文件名 ,只要是txt格式就可以 一行一个文件名如下




也可以双击手动输入文件名可以 运行如下就快速的改好了。


说一下主要的实现的:

       主要用到改名函数rename;

void CModifyNameDlg::OnReName() 
{
	CString DesName,strTemp,nameTemp,sourceName,strExt;
	count = m_filelist.GetItemCount();
	for(int i=0;i<count;i++)
	{	
		if(strcmp(m_filelist.GetItemText(i,3), "成功")==0)
		{
		  continue;
		}
		nameTemp=m_filelist.GetItemText(i,1);
		strTemp =nameTemp;
		sourceName=nameTemp;
		if(strTemp.Right(4).GetAt(0)=='.')
		strExt=strTemp.Right(3);
		else
		{
			if(strTemp.Right(2).GetAt(0)=='.')
			strExt=strTemp.Right(1);
			else
				strExt="";
		}
		int pos=nameTemp.Find("\\");
		while(pos>0)
		{
			nameTemp=nameTemp.Right(nameTemp.GetLength()-1-pos);
			pos=nameTemp.Find("\\");
		}
        DesName=m_filelist.GetItemText(i,2);
		if(DesName == ""){
		   AfxMessageBox(_T("请输入要改的文件名"));
		   return;
		}
		strTemp=strTemp.Left(strTemp.GetLength()-nameTemp.GetLength());
		CString temp;temp.Format("%s%s.%s",strTemp,DesName,strExt);
		sourceName.Replace("\\","\\\\");
		temp.Replace("\\","\\\\");
		int j;
		//CString returnCode;
          
	    if(strcmp(sourceName, temp)==0){
             m_filelist.SetItemText(i,3,"不修改与原来一致");
		  }else{
		  	 if(j= ::rename(sourceName,temp)< 0)
			  { 
			  m_filelist.SetItemText(i,3,"失败(有重名文件或者文件在使用)");
			  }else{
				m_filelist.SetItemText(i,3,"成功");
			  }
			 
		  }
		  
	}


	
}
注意在调试时候 rename需要双斜杠才起作用 
		sourceName.Replace("\\","\\\\");
		temp.Replace("\\","\\\\");

      

批量文件名文本逐行读取如下:

void CModifyNameDlg::OnBtpictext() 
{
	// TODO: Add your control notification handler code here
	//创建文件对话框
	    CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | 
		OFN_OVERWRITEPROMPT, _T("文本文件(*.txt)"));

	if (dlg.DoModal() == IDOK)
	{
		//获得文件路径
	CString textName = dlg.GetPathName();

	CStdioFile file;

		//打开文件
		if (!file.Open(textName, CFile::modeRead))
		{
			AfxMessageBox(_T("文件打开失败。"));
			return;
		}
         int count1 = m_filelist.GetItemCount();
         
         if(count1 <= 0){
		    AfxMessageBox(_T("请先添加图片"));
		 }
		//读文件
		CString strText = _T("");
		int i=0;
		while (file.ReadString(strText))
		{   if(!strText.IsEmpty()){
	           m_filelist.SetItemText(i,2,strText);
			   i++;
			}		
		}
		//关闭文件
		file.Close(); 
	}

}
为了可以手动在列表控件(listCtrl)可以输入文件名,进行了扩展。
功能比较少但是还是比较好用。

可执行程序:ModifyName





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值