IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 批量修改文件名 -> 正文阅读

[C++知识库]C++ 批量修改文件名

C++ 批量修改文件名

前言

在网上下一些学习资料,可是每个文件后带有一些其他无关的文字,形式如,某某某【某某某】.mp4,其中【】及其内容皆为无关内容,本文代码程序用于批量删除每个MP4文件后的【某某某】。

注意

文件名即为中文字符,不同于英文格式,所以以下代码中在需要的时候都使用了宽字符处理。

代码

#include <iostream>
#include <string>
#include <vector>
#include <io.h>
int main()
{
	//使用宽字节流对象,绑定为中文
	locale china("chs");//use china character
	wcin.imbue(china);//use locale object
	wcout.imbue(china);

	wstring dirpath = L"E:\\test\\"; //注意宽字符或宽字符串在初始化时要加前缀L

	_wfinddata_t file;	//使用宽字节的_wfinddata_t对象而非_finddata_t
	long lf;	//是否遍历完毕的标志位

	wchar_t suffixs[] = L"*.mp4";   //要寻找的文件类型后缀,也统一使用宽字符串
	vector<wstring> fileNameList;   //文件夹下该类型文件的名字向量表
	wchar_t* p;
	int psize = dirpath.size() + 6;	//后面要把后缀加上,为了防止数组越界需要多开一点空间,6个正好
	p = new wchar_t[psize];
	wcscpy(p, dirpath.c_str());

	//获取文件名,存入向量表
	if ((lf = _wfindfirst(wcscat(p, suffixs), &file)) == -1l)
	{
		cout << "文件没有找到!\n";
	} else
	{
		cout << "\n文件列表:\n";
		do {
			//wcout << file.name << endl;
			wstring str(file.name);
			fileNameList.push_back(str);
			wcout << str << endl;
		} while (_wfindnext(lf, &file) == 0);
	}
	_findclose(lf);	//使用完毕后要关闭文件
	delete[] p;

	//遍历文件名向量表,并进行修改
	cout << "\n开始修改文件名:" << endl;
	for (vector<wstring>::iterator iter = fileNameList.begin(); iter != fileNameList.end(); ++iter)
	{
		wstring oldName = dirpath + *iter;	//记得加上绝对路径
		auto pos = iter->find(L"【");
		wstring newName = dirpath + iter->substr(0, pos);
		newName += L".mp4";

		wcout << "oldName:" << oldName << endl;
		wcout << "newName:" << newName << endl;

		wcout << "oldName size = " << oldName.size() << endl;
		wcout << "newName size = " << newName.size() << endl;
		int ret = _wrename(oldName.c_str(), newName.c_str());
		if (ret != 0)
			perror("rename error!");
		cout << endl;
	}
	system("pause");
	return 0;
}

读者可以根据自身需求修改代码。img

温馨提示

最好在使用程序前备用原资料,避免出现意外情况(比如我,在编写使用过程中忘记添加决定路径,导致原资料改名后跑到了项目路径下😑)。

img

参考

https://blog.csdn.net/Dr_Myst/article/details/81463450

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:18:51  更:2022-05-12 16:19:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:06:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码