快速实现图片重命名(统一命名或按数字顺序命名)
有时候跑数据集需要图像的命名有规律,但储存时的命名可能是没有规律的。这时候手动一个个右键重命名,再进行修改过于耗时,这里给出简便的统一重命名方法。
按数字排序(用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】键,就会自动跳到下一张图片上进行重命名,为你省去重新选图片的麻烦。