前几天想起了整理电脑里的相册(当然网盘也有完整的备份),分类整理的时候发现好多图片名称重复,复制过去就会被覆盖,我也不知道啥回事,照理说不同的手机不同的时间拍摄的图片命名应该是不一样的.但是现在问题就是出现了,本来在网上下个软件是最优的解决方案,不过想了想还是自己弄个.

   首先就是要能读取文件夹里的文件名,这里借鉴了https://blog.csdn.net/Dr_Myst/article/details/81463450这篇文章

先建立一个简单的界面

然后初始化2个下拉框

BOOL CWENJIANPILIANGGAIMINGDlg::xlk_init()
{/*设置下拉框*/xlk_GZ.InsertString(0, _T("在最前面添加"));xlk_GZ.InsertString(1, _T("在最前面添加 \"_1\"数字排序,可指定开始数字"));xlk_GZ.InsertString(2, _T("在最后面添加"));xlk_GZ.InsertString(3, _T("在最后面添加 \"_1\"数字排序,可指定开始数字"));xlk_GZ.InsertString(4, _T("某段字符替换"));xlk_GZ.InsertString(5, _T("某段字符替换并在最后面添加 \"_1\"数字排序,可指定开始数字"));xlk_GZ.InsertString(6, _T("删除指定字符"));xlk_GZ.InsertString(7, _T("删除指定字符并在最后面添加 \"_1\"数字排序,可指定开始数字"));xlk_GZ.InsertString(8, _T("全部重命名并数字排序  \"_1\"开始"));xlk_GZ.SetCurSel(0);           //初始显示第几项的内容dang_qian_lie = 0;  xlk_KZ.InsertString(0, _T(".jpg"));xlk_KZ.InsertString(1, _T(".gif"));xlk_KZ.InsertString(2, _T(".txt"));xlk_KZ.InsertString(3, _T(".pdf"));xlk_KZ.InsertString(4, _T(".mp4"));xlk_KZ.InsertString(5, _T("自定义"));xlk_KZ.SetCurSel(0);dang_qian_kuo_zhan = 0;xlk_KZ.GetLBText(dang_qian_kuo_zhan, kuo_zhan_ming_L);bjk_yin_chang_P        = (CEdit*)GetDlgItem(IDC_EDIT2);//编辑框_原始字符指针bjk_yin_chang_xu_hao_P = (CEdit*)GetDlgItem(IDC_EDIT4);//编辑框_规则修改名(序号)指针bjk_kuo_zhan_zi_ding_yi_P= (CEdit*)GetDlgItem(IDC_EDIT5);//编辑框_扩展自定义指针wbk_ti_huan_P          = (CEdit*)GetDlgItem(IDC_STATIC_02);//文本控件"替换"wbk_xu_hao_P           = (CEdit*)GetDlgItem(IDC_STATIC_01);//文本控件"序号"bjk_yin_chang_P->ShowWindow(FALSE);//隐藏控件bjk_yin_chang_xu_hao_P->ShowWindow(FALSE);//隐藏控件wbk_ti_huan_P->ShowWindow(FALSE);//隐藏控件wbk_xu_hao_P->ShowWindow(FALSE); //隐藏控件bjk_kuo_zhan_zi_ding_yi_P->ShowWindow(FALSE); //隐藏控件/*在控件显示了的情况下*/
//  bjk_yin_chang_P->EnableWindow(FALSE);//控件不可用,颜色变灰色
//  bjk_yin_chang_P->EnableWindow(TRUE); //控件可用,颜色正常return 0;
}

新建一个线程来给文件改名,在新线程里使用switch分支判断用的哪种修改规则

UINT _cdecl ti_huan(LPVOID lpParam)
{CWENJIANPILIANGGAIMINGDlg* gai_ming_LP = (CWENJIANPILIANGGAIMINGDlg*)lpParam;TiHuan ti_huan_LP; //修改文件名的类//gai_ming_LP->dang_qian_lie;CString path;int len = 0;switch (gai_ming_LP->dang_qian_lie){case 0:len = ti_huan_LP.zui_qian_h(gai_ming_LP->path_L, gai_ming_LP->bjk_GM,gai_ming_LP->kuo_zhan_ming_L);

函数:在文件名最前面添加字符

 int TiHuan::zui_qian_h(CString path, CString xiu_gai, CString kuo_zhan){/*PathFindExtension*//*rename(oldName.c_str(), newName.c_str())   修改文件名*/int len = 0;CString kuo_zhan_ming_j;CString wen_jian_ming_j;if (path==L""){return -3;}wen_jian_ming_j = path + L"\\*";USES_CONVERSION;const char* path_jp = T2A(wen_jian_ming_j);long long handle;                 /*用于查找的句柄*/   struct _finddata_t fileinfo;      /*文件信息的结构体*//*_findfirst 参数1: 支持通配符,*.c表示当前路径下所有的后缀为.c的文件参数2: 这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明*/handle = _findfirst(path_jp, &fileinfo);//获取句柄if (-1 == handle){return -1;}if (fileinfo.attrib != _A_SUBDIR){wen_jian_ming_j = CString(fileinfo.name);kuo_zhan_ming_j.Format(L"%s", PathFindExtension(wen_jian_ming_j));   /*获取文件扩展名*/kuo_zhan_ming_j = kuo_zhan_ming_j.MakeLower();         /*将扩展名转换为小写字母*/if (kuo_zhan_ming_j.CollateNoCase(kuo_zhan) == 0) /*比较字符串,不区分大小写*/{len++;}}CString xiu_gai_j;while (!_findnext(handle,&fileinfo))//循环查找其他符合的文件,知道找不到其他的为止{if (fileinfo.attrib != _A_SUBDIR){wen_jian_ming_j = CString(fileinfo.name);kuo_zhan_ming_j.Format(L"%s", PathFindExtension(wen_jian_ming_j));   /*获取文件扩展名*/if(kuo_zhan_ming_j.CollateNoCase(kuo_zhan)==0) /*比较字符串,不区分大小写*/{xiu_gai_j = L"abc";xiu_gai_j = path + L"\\" + xiu_gai_j + wen_jian_ming_j;wen_jian_ming_j = path + L"\\" + wen_jian_ming_j;/*移动目录或者文件,修改目录或者文件名* 参数1: 要修改目录或文件的路径与名字* 参数2: 文件或目录的新名称。新名称不得已存在* 返回值: 失败返回0*/if (!MoveFile(wen_jian_ming_j, xiu_gai_j)){_findclose(handle); /*关闭句柄*/return -2;} len++;}}}_findclose(handle); /*关闭句柄*/return len;}

修改文件任意位置字符,修改后稍座处理后在用MoveFile函数修改

BOOL TiHuan::xiu_gai_zhong_jian_h(CString& wen_jian_ming, CString yuan_zi_fu, CString xiu_gai_zi_fu)
{int aa = wen_jian_ming.GetLength();/*计算字符串长度,中文也为1,实际上中文是2*///int abc = a.ReverseFind(_T('.'));/*从右往左开始查找 '.'*//*查找* 要查找的内容""或要搜索的单个字符''* 开始搜索的字符串中字符的索引,或从头开始搜索的 0* 返回:失败返回-1,成功返回匹配的第一个字符的从零开始的索引*/int aad = wen_jian_ming.Find(yuan_zi_fu);if (-1==aad){return FALSE;}int aae = yuan_zi_fu.GetLength();/*从给定索引处的字符开始的字符串中删除一个或多个字符* 参数1: 要删除 的对象中第一个字符的从零开始的索引。* 参数2: 要删除的字符数*/int aag = wen_jian_ming.Delete(aad, aae);if (aag <= 0){return FALSE;}/*在字符串的给定索引处插入单个字符或子字符串* 参数1: 将在其之前进行插入的字符的索引* 参数2:指向要插入的子字符串的指针*/int aaf = wen_jian_ming.Insert(aad, xiu_gai_zi_fu);if (aaf <= 0){return FALSE;}return TRUE;
}

下拉框控件事件处理

void CWENJIANPILIANGGAIMINGDlg::OnCbnSelchangeCombo1()
{UpdateData(TRUE);//用于将屏幕上控件中的数据交换到变量中。dang_qian_lie = xlk_GZ.GetCurSel();  //获取当前项的序号wbk_ti_huan_P->ShowWindow(FALSE);//隐藏控件bjk_yin_chang_P->ShowWindow(FALSE);//隐藏控件bjk_yin_chang_xu_hao_P->ShowWindow(FALSE);//隐藏控件wbk_xu_hao_P->ShowWindow(FALSE);//隐藏控件if (dang_qian_lie == 5){bjk_yin_chang_xu_hao_P->ShowWindow(TRUE);//显示控件bjk_yin_chang_P->ShowWindow(TRUE);//显示控件wbk_xu_hao_P->ShowWindow(TRUE);//显示控件wbk_ti_huan_P->ShowWindow(TRUE);//显示控件UpdateData(FALSE);//用于将数据在屏幕中对应控件中显示出来。}if (dang_qian_lie == 1 || dang_qian_lie == 3 || dang_qian_lie == 7){bjk_yin_chang_xu_hao_P->ShowWindow(TRUE);//显示控件wbk_xu_hao_P->ShowWindow(TRUE);//显示控件UpdateData(FALSE);//用于将数据在屏幕中对应控件中显示出来。}//xlk_GZ.SetCurSel(dang_qian_lie);//UpdateData(FALSE);
}

   先解决有无,在说其他,经过十分不严谨的测试,现在能将就用着了.实际上对我要做的事来说,已经够用了,准备把子文件夹的功能弄好就完工.GOGO…

C++之文件批量改名相关推荐

  1. 春林文件批量改名系统

    春林文件批量改名系统是一款功能强大,且十分便捷的批量文件改名软件,汇集了常用批量改名文件中所有优点,不仅可以轻松快速的将文件一键重命名,而且还支持大部分的序号格式,支持修改扩展名.mp3标签.mp3通 ...

  2. win7批量修改计算机名,文件批量改名助手

    文件批量改名助手是一款文件批量改名工具,功能简洁.操作简便.侧重实用,可通过鼠标点击轻松完成添加文件.设定改名规则.进行批量改名,所有功能集成在同一界面实现,易于操作和使用.文件批量改名助手不仅实现了 ...

  3. 实现文件及文件批量改名的工具(包含未确定盘符的情况下)

    标题:实现文件及文件批量改名的工具 作者:慕昊睿 时间:2019年10月30日 版权:苏比文化传媒工作室 接单:+WeChat ID:18171905547 处理前: 处理后 # 以下代码为test. ...

  4. 操作既简单、实用性强的文件批量改名高手

    有时候很多文件的文件名需要我们更改为统一顺序的名称,如果手工更改的话,很繁琐并且浪费大量时间,今天给大家介绍一款操作简单又实用性强的,并且还是单文件的软件[文件批量改名高手],使得我们的工作效率又提升 ...

  5. 『 文件操作 』文件批量改名

    # coding:utf-8 __author__ = 'Mr.数据杨' __explain__ = '文件批量改名' \'1.案例中是图片数据改名' \'2.默认路径path'import os i ...

  6. 文件批量改名工具v2.0_绿色免安装版

    文件批量改名工具 文件批量改名工具可以用来批量重命名多个文件.您可以使用数字来指定命名规则,替换特定的字符或短语,并将文件特有的信息插入每个新文件名. 批量改名 命名规则:定义重命名过程中的命名规则, ...

  7. 实现文件及文件批量改名的工具(可支持无盘符文件)

    标题:实现文件及文件批量改名的工具 作者:慕昊睿 时间:2019年10月30日 版权:苏比文化传媒工作室 接单:+WeChat ID:18171905547 修改前 修改后 以下为运行代码 impor ...

  8. 文件管理工具,文件批量改名,文件从1到100命名

    当你拥有多个文件素材的时候,如何快速重命名,比如将其按1到100命名呢?不知道怎么操作的宝贝们,下面请随小编一起来试试. 需要哪些工具? 文件素材若干 怎么快速改名? 运行[文件批量改名高手],其中有 ...

  9. 文件批量改名#批量修改文件名称中有特殊符号

    在日常工作中,相信大家都会碰到,需要有修改文件名或文件夹名称等,修改方法也是很多种,如果遇到文件名有特殊符号,要如何把特殊符号删除或替换成自己需要的文字或其他表情符号呢.一般大家都是手动去修改,如果文 ...

  10. 文件批量改名:如何将在不同文件夹里的文件统一命名并设置编号?

    文件批量改名,文件太多了,可以将在不同文件夹里的文件进行导入,统一重命名成相同的文件名并设置单独编号?有什么什么快速的操作办法吗?今天就有小编来教教大家要如何进行操作. 首先我们要进入文件批量改名高手 ...

最新文章

  1. MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen
  2. Android中接收系统广播消息
  3. python os 文件操作 os.rename(src, dst) 方法 os.renames()
  4. vmware linux 编译内核,VMWare编译linux内核的注意事项
  5. http session 基础知识
  6. Java 操作 JSON
  7. MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介
  8. c语言程序设计基础所有知识点,《C语言程序设计》基础知识点总结.doc
  9. 【Android第一行代码第三版】【01】
  10. 手机算通用计算机还是,通用盾是一种u盾。手机和电脑都可以用。问一...
  11. c语言编程吉他和弦,学吉他和弦怎么弹啊?就C大调C,Dm,Em,F,G,Am,Bdim.1,2,3,4,5,6,7级和弦举个简单的例帮帮我...
  12. 【机器学习】十二、一文看懂支持向量机原理
  13. AppCan MVVM框架简单介绍
  14. android 平板z97,生命在于折腾 iGame Z97也能玩Android
  15. 女友让我每天半夜十二点给她发晚安?我用 Python 做了个定时发消息神器!怕她干嘛!
  16. html语法在线检测,HTML语法检测
  17. hangfire安装
  18. 小黄的刷题之路(十六)——五行魔法(枚举/蛮力法)
  19. 易基因 | 精准医学:DNA甲基化图谱在发现和精确诊断神经肿瘤领域的应用
  20. python getsize函数,Python getsize函数

热门文章

  1. App Store Connect 等待协议
  2. 团队管理,领导的“无为”就是最大“有为”
  3. OSChina 周四乱弹 —— 当你简历注水但还是找到了工作
  4. WFQ/CBWFQ/LLQ介绍
  5. 大麻和烟草对表观基因组产生双重影响
  6. 树莓派4b安装Android TV 10
  7. 不用恢复出厂设置啦,联想电脑YogaDuet如何升级win11?在BIOS开启加载系统初始值 打开Intel Platform Trust开启TMP2.0更新win11
  8. 微信公众账号分为哪几类?区别是什么?
  9. 人工智能、机器学习和模式识别以及神经网络
  10. 回溯法之符号三角形问题