我有这段代码将我的整个文件夹结构移动到另一个文件夹,但我只想将此结构复制到另一个文件夹,所以我的第一个文件夹仍然保留所有文件和子目录。
我还必须使用标志 '-a' - 复制隐藏文件,'-u' - 从源目录(我从中复制的第一个文件夹)中删除文件,'-o' - 目标中的现有文件覆盖和 '-dx' - 将文件复制到级别 'x' 嵌套,我真的不知道如何集成。
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <iostream>
#include <dir.h>
#include <string.h>
#include <limits>
using namespace std;
char dest[PATH_MAX];
char old[PATH_MAX];
void recursiveTraverse(char* path);
int main()
{
strcpy(dest, "E:\\moved");
chdir("E:\\example");
recursiveTraverse("E:\\example");
return 1;
}
void recursiveTraverse(char* path)
{
char searchPath[PATH_MAX];
char newPath[PATH_MAX];
char moved[PATH_MAX];
int value;
struct _finddata_t fileinfo;
strcpy(searchPath, path);
strcat(searchPath, "\\*.*");
value = _findfirst(searchPath, &fileinfo);
while (_findnext(value, &fileinfo) == 0)
{
if (strcmp(fileinfo.name, "..") != 0 && strcmp(fileinfo.name, ".") != 0)
{
strcpy(moved, dest);
strcat(moved, "\\");
strcat(moved, fileinfo.name);
rename(fileinfo.name, moved);
}
if (strcmp(fileinfo.name, "..") && fileinfo.attrib & _A_SUBDIR)
{
strcpy(newPath, path);
strcat(newPath, "\\");
strcat(newPath, fileinfo.name);
strcpy(old, dest);
strcat(dest, "\\");
strcat(dest, fileinfo.name);
mkdir(dest);
recursiveTraverse(newPath);
strcpy(dest, old);
}
}
_findclose(value);
}