c 语言 批量修改文件名,C++批量修改文件名, 大佬勿喷

[C++] 纯文本查看 复制代码/**

* 枚举文件夹下所有文件并将之重命名

* @param char* rootDir 文件目录

* @param char* searchName 通配符

* @param char* extName 文件后缀

* @param int cntFileNo 当前编号

*/

int setFileNameBySearch(char* rootDir, char* searchName, char* extName, int cntFileNo)

{

// 文件句柄

long file_handle;

// 文件信息结构体

struct _finddata_t fileinfo;

file_handle = _findfirst(searchName, &fileinfo);

if(file_handle == -1) return cntFileNo;

char file_tmp_name[255] = "";

char file_cnt_name[255] = "";

strcpy(file_tmp_name, rootDir);

strcpy(file_cnt_name, rootDir);

strcat(file_cnt_name, fileinfo.name);

int tmp = cntFileNo, j;

char tmp_pic[255] = "";

if(tmp >= 10)

{

int tmp_len = 0;

while(tmp)

{

tmp_pic[tmp_len ++] = (tmp % 10 + '0');

tmp /= 10;

}

for(j = 0; j <= (tmp_len - 1) / 2; j ++)

{

char tmp_ch = tmp_pic[j];

tmp_pic[j] = tmp_pic[tmp_len - 1 - j];

tmp_pic[tmp_len - 1 - j] = tmp_ch;

}

}

else

tmp_pic[0] = tmp + '0';

// 拼接文件名

strcat(tmp_pic, extName);

strcat(file_tmp_name, tmp_pic);

// 复制文件

rename(file_cnt_name, file_tmp_name);

cntFileNo += 1;

while(!_findnext(file_handle, &fileinfo))

{

tmp =cntFileNo;

memset(tmp_pic, 0, sizeof(tmp_pic));

memset(file_tmp_name, 0, sizeof(file_tmp_name));

memset(file_cnt_name, 0, sizeof(file_cnt_name));

strcpy(file_tmp_name, rootDir);

strcpy(file_cnt_name, rootDir);

strcat(file_cnt_name, fileinfo.name);

if(tmp >= 10)

{

int tmp_len = 0;

while(tmp)

{

tmp_pic[tmp_len ++] = (tmp % 10 + '0');

tmp /= 10;

}

for(j = 0; j <= (tmp_len - 1) / 2; j ++)

{

char tmp_ch = tmp_pic[j];

tmp_pic[j] = tmp_pic[tmp_len - 1 - j];

tmp_pic[tmp_len - 1 - j] = tmp_ch;

}

}

else

tmp_pic[0] = tmp + '0';

// 拼接文件名

strcat(tmp_pic, extName);

strcat(file_tmp_name, tmp_pic);

// 复制文件

rename(file_cnt_name, file_tmp_name);

cntFileNo += 1;

}

_findclose(file_handle);

return cntFileNo;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用C语言中的文件操作函数来批量修改文件名。具体步骤如下: 1. 使用`opendir()`打开目录,获取目录句柄。 2. 使用`readdir()`读取目录下的文件列表,通过循环遍历每一个文件。 3. 对于每一个文件,使用`rename()`函数来修文件名。 以下是一个示例代码,仅供参考: ```c #include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *ent; char old_name[256], new_name[256]; if (argc < 3) { printf("Usage: %s <dir> <new_suffix>\n", argv[0]); exit(1); } // 打开目录 dir = opendir(argv[1]); if (dir == NULL) { perror("opendir"); exit(1); } // 遍历目录 while ((ent = readdir(dir)) != NULL) { // 忽略 . 和 .. 两个特殊目录 if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) { continue; } // 构造旧文件名和新文件名 sprintf(old_name, "%s/%s", argv[1], ent->d_name); sprintf(new_name, "%s/%s%s", argv[1], ent->d_name, argv[2]); // 修文件名 if (rename(old_name, new_name) != 0) { perror("rename"); } } closedir(dir); return 0; } ``` 在上面的示例中,程序会扫描指定目录下的所有文件,将它们的文件名后附上指定的后缀。例如,如果你执行以下命令: ```sh $ ./rename_files /path/to/dir .txt ``` 那么程序会将 `/path/to/dir` 目录下的所有文件名为以 `.txt` 结尾的形式。注意,这个程序没有做任何安全检查,如果你不小心将错误的参数传递给它,可能会导致数据的丢失或损坏,所以请谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值