将文件从不同的文件夹复制到C ++中的特定文件夹

时间:2016-08-31 07:27:16

标签: c++ windows

我的问题是我有几个名称为“MORE0001”“MORE0002”等的文件夹,它们各包含一个.SPE文件。

我想通过遍历所有单个.SPE - 文件夹来了解是否有办法将所有MORE... - 文件解压缩到一个文件夹。

我需要某事。像这样:

for (int i=0; i<10;i++){

newfile = getfile("directory/MORE%04d/filename.SPE", i); 

// copy newfile to a new directory..

}

我希望你们能帮我找到一个简单的解决方案,因为我还没有找到类似的问题。

2 个答案:

答案 0 :(得分:1)

这太简单了..

我可以使用rename-function ..

所以它会像:

rename(path/filename.SPE, newpath/filename.SPE);

谢谢,但我自己解决了;)!

答案 1 :(得分:0)

I have created one sample program, which might helps to resolve your problem.

#include<Windows.h>
#include<regex>

using namespace std;

void main()
{
    regex e1("MORE\\d+");
    string szDir = "C:\\*";
    WIN32_FIND_DATA ffd;
    HANDLE hFind = FindFirstFileA(szDir.c_str(), &ffd);
    do
    {
        if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            if (regex_match(ffd.cFileName,e1 ))
            {
                string  s1 = ffd.cFileName;
                string s2 = "C:\\" + s1 + "\\*";
                WIN32_FIND_DATA ffdMORE;
                HANDLE hFindMORE = FindFirstFile(s2.c_str(), &ffdMORE);
                do
                {
                    regex e2("\\w+.SPE");
                    if (regex_match(ffdMORE.cFileName,e2))
                    {
                        string commondir = "C:\\CommonDir\\";
                        string sourcePath = "C:\\" + s1 + "\\";
                        CopyFile(sourcePath.append(ffdMORE.cFileName).c_str(), commondir.append(ffdMORE.cFileName).c_str(), FALSE);
                    }
                } while (FindNextFile(hFindMORE, & ffdMORE) != 0);
            }
        }
    } while (FindNextFile(hFind, &ffd) != 0);
}

Thanks, Bharathraj