C++批量修改文件夹下文件名

来源:互联网 发布:python反编译 编辑:程序博客网 时间:2024/05/16 05:14

在微信朋友圈里面看到别人发的一个音乐相册,里面都是员工的party照,当时就想把这些照片给扒下来,鉴于音乐相册仍是用html制作的,那么素材应该都很容易获取了(暑假实习的时候经常做些扒网站素材的活),所以扒这些照片很多方法,这里就不介绍了,当时当我扒下来之后,发现都是不可读文件,后面尝试了下修改文件名后缀,能读取,既然这样的话,那把所有文件名都修改过来即可了,nonono,身为一名有洁癖的程序员,这种累活应该交给电脑干,所以当时就想着写一个脚本来做,因为暑假有用过php服务器来线上批量修改文件夹名(PHP脚本修改),想到这种方法比较麻烦,改用C++来做,以后便于修改。

#include <iostream>#include <windows.h>#include <stdio.h>using namespace std;#define MAX_PATH 999999int find_all_files(const char * lpPath){    char szFind[MAX_PATH];    WIN32_FIND_DATA FindFileData;    strcpy(szFind,lpPath);    strcat(szFind,"\\*.*");    cout<<szFind<<endl;    HANDLE hFind=::FindFirstFile(szFind,&FindFileData);    if(INVALID_HANDLE_VALUE == hFind)        return -1;    do    {        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {            if(strcmp(FindFileData.cFileName,".")!=0 && strcmp(FindFileData.cFileName, "..")!=0)            {                //发现子目录,递归之                char szFile[MAX_PATH] = {0};                strcpy(szFile,lpPath);                strcat(szFile,"\\");                strcat(szFile,FindFileData.cFileName);                find_all_files(szFile);            }        }        else        {            //找到文件,处理之            cout << lpPath << "\\" << FindFileData.cFileName << endl;            string temporaryName = FindFileData.cFileName;            string oldName(lpPath);            oldName += "\\";            oldName += temporaryName;            string newName = oldName + ".png";            //cout<<"newName:"<<newName<<endl;            //FindFileData.cFileName = temporaryName;            if (rename(oldName.c_str(), newName.c_str()) == 0)                //printf("Renamed %s to %s.\n", oldName, newName);                cout<<oldName+"->"+newName+"\n";            else                perror("rename");            //cout<<"new:"<<FindFileData.cFileName<<endl;        }    }while(::FindNextFile(hFind,&FindFileData));    ::FindClose(hFind);    return 0;}int main(){    cout << "Hello world!" << endl;    char *lpPath = "G:\\123";    find_all_files(lpPath);    return 0;}
0 0