[C++] 批量删除文件名多余的一个相同字符串

2024-09-04 06:58

本文主要是介绍[C++] 批量删除文件名多余的一个相同字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用C++方法:

// ++++++++

#include <string>
#include <io.h>
#include <iostream>
using namespace std;
bool change_name(const char* char_path,const char* char_del)
{string path="";string path_main="";string find_str="";path.append(char_path);find_str.append(char_del);cout<<"Now,you find file path is :"<<path.c_str()<<endl;path_main.append(path.c_str());path.append("/*.*");string path_old="";string path_new="";string file_name="";string find_result="";string temp_name="";string file_exe="";string file_pre="";_finddata_t file; bool bFind=false;bool bFile=false;long lf;  //输入文件夹路径  if((lf = _findfirst(path.c_str(), &file))==-1)  cout<<"Not Found!"<<endl;  else{  //输出文件名  cout<<"file name list:"<<endl;  while(_findnext( lf, &file)==0){  bFile =false;bFind =false;path_old="";path_new="";file_name="";find_result="";temp_name="";file_pre="";file_exe="";file_name.append(file.name);path_new.append(path_main.c_str());path_new.append("\\");if(file_name.find("..")!= string::npos){continue;}//cout<<file.name<<endl;  path_old.append(path_main.c_str());path_old.append("\\");path_old.append(file.name);//cout<<path_old.c_str()<<endl; int iPos_dot=0;iPos_dot =file_name.find_last_of(".");if(iPos_dot<=0){bFile =false;}else{bFile = true;}if(false == bFile){continue;}file_exe.append(file_name.substr(iPos_dot,file_name.length()));temp_name.append(file_name.substr(0,iPos_dot));int ilen = file_name.length();int ilen_find = temp_name.length() - find_str.length();if(temp_name.find(find_str) != string::npos){bFind=true;}if(ilen_find>0 && (true==bFind)){find_result.append(temp_name.substr(ilen_find,find_str.length()));file_pre.append(temp_name.substr(0,ilen_find));if(find_result.find(find_str.c_str())!= string::npos){//cout<<"\r\n find! \r\n"<<endl;path_new.append(file_pre.c_str());path_new.append(file_exe.c_str());cout<<"Old file"<<path_old.c_str()<<endl;cout<<"New file"<<path_new.c_str()<<endl;//check path_new if exist?int access_rs=0;access_rs = access(path_new.c_str(), 0) ;if(access_rs == 0)//if ((fopen(path_new.c_str(),"r"))!=0){cout<<"Files has existed!"<<path_new.c_str()<<endl;}else{rename(path_old.c_str(),path_new.c_str());}}}else{cout<<"Not find any file!"<<endl;}}  }  _findclose(lf);  //cin.get();return true; 
}void OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码CString sz_Path=_T("");CString sz_Del=_T("");GetDlgItemText(IDC_EDIT1,sz_Path);GetDlgItemText(IDC_EDIT2,sz_Del);string str_path="";str_path.append(sz_Path);cout<<str_path<<endl;string str_del="";str_del.append(sz_Del);change_name(str_path.c_str(),str_del.c_str());MessageBox("Successfully!",_T("title"),MB_OK);
}


//--------------

在VS2010上面测试没问题


这篇关于[C++] 批量删除文件名多余的一个相同字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135321

相关文章

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规