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

版权声明:转载请注明出处 https://blog.csdn.net/k183000860/article/details/53319072

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

#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;

#define MAX_PATH 999999

int 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;
}

猜你喜欢

转载自blog.csdn.net/k183000860/article/details/53319072
今日推荐