使用c++重命名文件

在编译完FPGA的版本后,需要把bit文件和cdc发给其他人进行测试,由于两个文件和FPGA工程同名,每次都要重命名,加上今天的日期,便于版本控制。以上就是需求。于是想到要不要写个脚本,一键运行改名,最先想到的是用bat脚本,感觉没学过太麻烦,于是想到用c++,刚好最近在看string类相关的,于是花了点时间弄了一个控制台程序。代码如下:

//filesrename.cpp
#include <iostream>
#include<string>
#include<fstream>
#include<io.h>
#include<vector>
#include <time.h>
using namespace std;
bool IsExisteDirectory(string path)
{
	if (-1 != _access(path.c_str(), 0))
	{
		return true;
	}
	return false;
}
void getFiles(string path, vector<string>& files)
{
	//文件句柄
	long   hFile = 0;
	//文件信息
	struct _finddata_t fileinfo;
	string p;
	if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
	{
		do
		{
			//如果是目录,迭代之
			//如果不是,加入列表
			if ((fileinfo.attrib &  _A_SUBDIR))
			{
				if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
					getFiles(p.assign(path).append("\\").append(fileinfo.name), files);
			}
			else
			{
				//files.push_back(p.assign(path).append("\\").append(fileinfo.name));
				files.push_back(fileinfo.name);
			}
		} while (_findnext(hFile, &fileinfo) == 0);
		_findclose(hFile);
	}
}
bool AlterFileName(string path,string filename, string newname)
{
	filename = path + '\\' + filename;
	newname = path + '\\' + newname;
	//获取后缀
	string suffix = "";
	if (filename.rfind('.') != filename.npos)
	{
		suffix = filename.substr(filename.rfind('.'));
		newname += suffix;
	}
	// int rename(char *oldname, char *newname);
	// 更改文件名,成功返回0,否则返回-1
	if (-1 == rename(filename.c_str(), newname.c_str()))
	{
		return false;
	}
	return true;
}

void main()
{
	string path = _pgmptr;// exe文件所在目录,带*.exe
	cout << path<< endl;
	string newdir = "phl";
	string m_strPath = path.substr(0, path.find_last_of('\\') + 1);// 给m_strPath赋初值
		   m_strPath += newdir;//新文件夹路径
	if (!IsExisteDirectory(m_strPath))
	{
		string str = "md \"" + m_strPath + "\"";
		//命令行操作md(make dir);\"代表双引号字符;md "D:\c++\filerename\filerename\Debug\phl"
		system(str.c_str());//string 转成const cahr*
	}
	vector<string >files;
	getFiles(m_strPath, files);//获取带后缀的文件名

	//测试控制台
	//string ip = "10.3.8.211";
	//string p = "ping "+ip;
	//system(p.c_str());

	//获取系统时间
	time_t rawtime;
	time(&rawtime);
	char   pblgtime[20];
	strftime(pblgtime, 20, "%Y_%m_%d", localtime(&rawtime));
	cout << "strftime   " << pblgtime << endl;
	string data_str(pblgtime);
	for (int i = 0; i < files.size(); i++)
	{
		if (AlterFileName(m_strPath, files[i], data_str) == 1)
			cout << "rename success" << endl;
		else
			cout << "rename error" << endl;
	}
}

简单介绍以下这个程序的功能,这个程序获取filesrename.exe所在的文件夹,判断这个文件夹下是否有一个文件夹“phl”,如果没有则创建之,然后获取“phl“文件夹下的所有文件名(包括后缀名),并存储起来,然后对这些文件进行命名,命名格式暂定为当前日期,同时保持后缀名不变。

这个程序包含了文件路径和文件名的获取,系统时间的获取,新建文件夹的操作,重命名的操作,以及字符串的相关操作。
参考内容有如下:
https://blog.youkuaiyun.com/jenny_84/article/details/44804141
https://www.cnblogs.com/anhuizhj/p/3806380.html
http://www.cjjjs.com/paper/xmkf/6272015363818304.aspx

这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值