Windows - 仅当父目录不存在时才复制文件
Windows - Copying files only if parent directory doesn't exist
我的目录结构如下:
Main1
+-Parent1
+-File1
+-File2
+-Parent2
+-File3
+-File4
+-Parent3
+-File5
+-File6
...
我正在寻找复制到新目录的方法。但是,如果父文件夹已经存在,无论文件内容如何,我都不想复制它。
Main2
+-Parent2
+-File7
+-File8
因此,如果我从 Main1
复制到 Main2
,Main1
中的 Parent2
文件夹将不会复制,其内容也不会。
最后应该是这样的:
Main1
+-Parent2
+-File3
+-File4
Main2
+-Parent1
+-File1
+-File2
+-Parent2
+-File7
+-File8
+-Parent3
+-File5
+-File6
...
这是我用来读取任何文件夹中的文件夹列表的代码。您可以使用它来获取您所请求的内容。
// herohuyongtao
std::vector<std::string> get_all_folder_names_within_folder(std::string folder)
{
std::vector<std::string> names;
char search_path[200];
sprintf_s(search_path, 200, "%s/*.*", folder.c_str());
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(search_path, &fd);
int i = 0;
if(hFind != INVALID_HANDLE_VALUE) {
do {
// read all (real) files in current folder
// , delete '!' read other 2 default folder . and ..
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) {
if (i >= 2){
names.push_back(fd.cFileName);
}
}
i++;
}while(::FindNextFile(hFind, &fd));
::FindClose(hFind);
}
return names;
}
我的目录结构如下:
Main1
+-Parent1
+-File1
+-File2
+-Parent2
+-File3
+-File4
+-Parent3
+-File5
+-File6
...
我正在寻找复制到新目录的方法。但是,如果父文件夹已经存在,无论文件内容如何,我都不想复制它。
Main2
+-Parent2
+-File7
+-File8
因此,如果我从 Main1
复制到 Main2
,Main1
中的 Parent2
文件夹将不会复制,其内容也不会。
最后应该是这样的:
Main1
+-Parent2
+-File3
+-File4
Main2
+-Parent1
+-File1
+-File2
+-Parent2
+-File7
+-File8
+-Parent3
+-File5
+-File6
...
这是我用来读取任何文件夹中的文件夹列表的代码。您可以使用它来获取您所请求的内容。
// herohuyongtao
std::vector<std::string> get_all_folder_names_within_folder(std::string folder)
{
std::vector<std::string> names;
char search_path[200];
sprintf_s(search_path, 200, "%s/*.*", folder.c_str());
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(search_path, &fd);
int i = 0;
if(hFind != INVALID_HANDLE_VALUE) {
do {
// read all (real) files in current folder
// , delete '!' read other 2 default folder . and ..
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) {
if (i >= 2){
names.push_back(fd.cFileName);
}
}
i++;
}while(::FindNextFile(hFind, &fd));
::FindClose(hFind);
}
return names;
}