写一段c++代码按要求批量重命名tif图片
时间: 2024-01-16 16:04:49 浏览: 76
C++实现的图片文件批量重命名
4星 · 用户满意度95%
这里提供一种基于Windows操作系统的C代码示例,可以批量重命名指定目录下的所有.tif格式图片,将它们改名为指定前缀加上自增序号的格式,如"prefix_001.tif", "prefix_002.tif"等。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <windows.h>
int main() {
char* dir_path = "C:\\directory\\to\\images"; //指定目录路径
char* prefix = "new_prefix"; //指定新前缀
int count = 1; //文件计数器,从1开始
int prefix_len = strlen(prefix);
char old_file_path[MAX_PATH], new_file_path[MAX_PATH];
struct dirent* entry;
DIR* dir = opendir(dir_path);
if (dir == NULL) { //目录打开失败
printf("Error: failed to open directory.\n");
return -1;
}
while ((entry = readdir(dir)) != NULL) { //遍历目录下所有文件
if (entry->d_type == DT_REG && strstr(entry->d_name, ".tif") != NULL) { //只处理.tif格式文件
sprintf(old_file_path, "%s\\%s", dir_path, entry->d_name);
sprintf(new_file_path, "%s\\%s_%0*d.tif", dir_path, prefix, prefix_len, count); //生成新文件名
if (rename(old_file_path, new_file_path) != 0) { //重命名失败
printf("Error: failed to rename file %s.\n", entry->d_name);
}
else {
printf("Renamed file %s to %s.\n", entry->d_name, new_file_path);
count++; //计数器加1
}
}
}
closedir(dir);
return 0;
}
```
上述代码中,使用了Windows系统的文件重命名函数`rename()`,它的参数分别为旧文件名和新文件名,如果重命名成功则返回0,否则返回非零值。新文件名的生成使用了`sprintf()`函数,其中`%s`表示字符串格式,`%0*d`表示补零格式,具体可以参考C语言格式化输出的相关资料。
运行代码时需要将`dir_path`和`prefix`变量修改为实际值,同时需要注意目录路径中的反斜杠`\`需要转义为双反斜杠`\\`,否则会被视为转义字符导致路径错误。
阅读全文