C/C++:C语言小程序—批量重命名文件
生活随笔
收集整理的這篇文章主要介紹了
C/C++:C语言小程序—批量重命名文件
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
介紹
筆者有需求,需要將指定文件夾下的所有文件在原有名字的基礎(chǔ)上進(jìn)行重命名。 筆者查閱發(fā)現(xiàn)在windows API中有移動(dòng)文件的API,將文件移動(dòng)到當(dāng)前文件就相當(dāng)于重命名,故此可以使用該API。
BOOL WINAPI MoveFile(_In_ LPCTSTR lpExistingFileName,_In_ LPCTSTR lpNewFileName );這是對(duì)指定路徑的某個(gè)文件進(jìn)行移動(dòng),對(duì)所有文件進(jìn)行移動(dòng),需要對(duì)文件進(jìn)行遍歷。筆者查閱后,可以使用下面3個(gè)函數(shù)實(shí)現(xiàn)文件的遍歷操作。
// 根據(jù)filespec匹配 查找到指定文件(可能是多個(gè)),返回第一個(gè)匹配的句柄 intptr_t _findfirst(const char *filespec,struct _finddata_t *fileinfo // 傳出參數(shù) ); // 下一個(gè)匹配的文件 int _findnext(intptr_t handle,struct _finddata_t *fileinfo // 傳出參數(shù) ); // 關(guān)閉文件句柄 int _findclose( intptr_t handle );效果
添加了指定前綴002-
代碼
#include <Windows.h> #include <stdio.h> #include <io.h> #include <stdlib.h> #define MAX 256int main() {struct _finddata_t file = {0};int fileHandle = 0, i = 0, len = 0;char filePath[MAX] = {0}, newName[MAX] = {0}, oldPath[MAX] = {0}, newPath[MAX] = {0}; char dir[MAX] = "F:\\Book\\AAA_Learn_Note\\新概念英語(yǔ)(第2冊(cè))美音(MP3+LRC)\\NCE2-美音-(MP3+LRC)\\";char prefix[MAX] = "002-";sprintf(filePath,"%s%s",dir,"*.*");fileHandle = _findfirst(filePath,&file); // 根據(jù)匹配規(guī)則找到指定類型的文件 if(fileHandle == -1) {printf("not find file\n");return 0;}do {len = strlen(file.name);if( len > 2) // 排除目錄文件 {sprintf(newName,"%s%s",prefix,file.name);// 添加前綴 sprintf(oldPath,"%s%s",dir,file.name);sprintf(newPath,"%s%s",dir,newName); // printf("%s\n",oldPath); // printf("%s\n",newPath); MoveFile(oldPath,newPath); // 移動(dòng)文件, 移動(dòng)到當(dāng)前文件實(shí)際上就是重命名,如果是拷貝就用CopyFile i++;}} while( 0 == _findnext(fileHandle,&file) );_findclose(fileHandle);printf("move %d file success \n",i);return 0; }總結(jié)
以上是生活随笔為你收集整理的C/C++:C语言小程序—批量重命名文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IDA工具各个功能总结
- 下一篇: MySql 主从模式原理及操作步骤