SHFILEOPSTRUCT和SHFileOperation中的问题

时间:2018-11-11 04:52:34

标签: c++

我正在尝试使用SHFileOperation()函数将文件夹从一个目录复制到另一目录。

我使用以下链接编写了以下代码:Copy a Folder

但是我得到错误代码0x7B,并且当我搜索有关错误的信息时,this page说:“文件名,目录名或卷标签语法不正确。”

我正确地写了文件名和目录名,但是我不知道为什么这段代码不能将ty文件夹从D驱动器复制到D驱动器上的另一个文件夹secondfolder

对不起,我在您的网站上搜索了很多内容,但是我没有得到任何答案。

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    system("color 0A")
    SHFILEOPSTRUCT fo;
    memset(&fo, 0, sizeof(fo));
    fo.hwnd = 0;
    fo.wFunc = FO_COPY;
    fo.pFrom = L"D:\\ty\\*\0";
    fo.pTo = L"D:\\secondfolder\\*\0";
    fo.fFlags = FOF_NOCONFIRMMKDIR |
        FOF_NOCONFIRMATION |
        FOF_NOERRORUI |
        FOF_SILENT;
    int n = SHFileOperation(&fo);
    if(n == 0)
    {
        cout << "success" << endl;
    }
    else if (n != 0)
    {
        cout << "faild" << endl;
        cout << hex << n << endl;
    }

    system("PAUSE");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您需要从*中删除pTo

fo.pTo = L"D:\\secondfolder\\\0";

此外,您正在尝试仅复制ty的内容,而不是复制ty本身。如果需要,也可以从*中删除pFrom

fo.pFrom = L"D:\\ty\\\0";