快速实现图片重命名(统一命名或按数字顺序命名)

2023-12-29 17:01:54

快速实现图片重命名(统一命名或按数字顺序命名)

有时候跑数据集需要图像的命名有规律,但储存时的命名可能是没有规律的。这时候手动一个个右键重命名,再进行修改过于耗时,这里给出简便的统一重命名方法。
在这里插入图片描述

按数字排序(用C++编写)

代码如下所示。

只需要把main函数里的文件夹目录改为自己的即可
同时要注意图片的格式是jpg或bmp或其他。


#include <stdio.h>
#include <io.h>
#include <string>
#include <iostream>  
#include <fstream> 
#include <sstream>
#include <vector>
using namespace std;



const int N = 4;   //整型格式化输出为字符串后的长度,例如,N=6,则整型转为长度为6的字符串,12转为为000012

const string FileType = ".jpg";    // 需要查找的文件类型

/* 函数说明 整型转固定格式的字符串
输入:
n 需要输出的字符串长度
i 需要结构化的整型
输出:
返回转化后的字符串
*/
string int2string(int n, int i)
{
	char s[BUFSIZ];
	sprintf_s(s, "%d", i);
	int l = strlen(s);  // 整型的位数

	if (l > n)
	{
		cout << "整型的长度大于需要格式化的字符串长度!";
	}
	else
	{
		stringstream M_num;
		for (int i = 0; i < n - l; i++)
			M_num << "0";
		M_num << i;

		return M_num.str();
	}
}

int main()
{
	_finddata_t c_file;   // 查找文件的类

	string File_Directory = "C:\\Users\\XXXXXXXXXXXX";   //文件夹目录

	string buffer = File_Directory + "\\*" + FileType;

	//long hFile;  //win7系统,_findnext()返回类型可以是long型
	intptr_t hFile;   //win10系统 ,_findnext()返回类型为intptr_t ,不能是long型

	hFile = _findfirst(buffer.c_str(), &c_file);   //找第一个文件

	if (hFile == -1L)   // 检查文件夹目录下存在需要查找的文件
		//printf("No %s files in current directory!\n", FileType);
		printf("No %s files in current directory!\n");
	else
	{
		printf("Listing of files:\n");

		int i = 0;
		string newfullFilePath;
		string oldfullFilePath;
		string str_name;
		do
		{
			oldfullFilePath.clear();
			newfullFilePath.clear();
			str_name.clear();

			//旧名字
			oldfullFilePath = File_Directory + "\\" + c_file.name;

			//新名字
			++i;
			str_name = int2string(N, i);    //整型转字符串
			newfullFilePath = File_Directory + "\\" + str_name + FileType;

			/*重命名函数rename(const char* _OldFileName,const char* _NewFileName)
			第一个参数为旧文件路径,第二个参数为新文件路径*/
			int c = rename(oldfullFilePath.c_str(), newfullFilePath.c_str());

			if (c == 0)
				puts("File successfully renamed");
			else
				perror("Error renaming file");

		} while (_findnext(hFile, &c_file) == 0);  //如果找到下个文件的名字成功的话就返回0,否则返回-1  
		_findclose(hFile);
	}

	return 0;
}

用同样的方式也可以给除图片外的其他文件类型重命名

直接重命名(通过快捷键)

首先按下快捷键【Ctrl+A】,选中全部图片,然后按下键盘最上方的【F2】,给第一张图片输入名称,接着再按下回车键,图片名字就全部统一修改完成了。

如果你需要修改不一样的名字,可以在选中第一张图片后,按下功能键【F2】,输入新的名称,接着再按下【Tab】键,就会自动跳到下一张图片上进行重命名,为你省去重新选图片的麻烦。

文章来源:https://blog.csdn.net/mnancy_/article/details/135291615
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。