C - 如何将文件夹结构复制到另一个文件夹?

时间:2021-03-17 07:15:23

标签: c winapi directory tree-traversal

我有这段代码将我的整个文件夹结构移动到另一个文件夹,但我只想将此结构复制到另一个文件夹,所以我的第一个文件夹仍然保留所有文件和子目录。

我还必须使用标志 '-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);
}

0 个答案:

没有答案
相关问题