**问题:**使用SHFileOperation复制文件夹时,编译通过,没问题,程序运行返回183(成功返回0),当然文件夹也没成功复制过去。(开发环境是vs2013,win10)
在网上查了好多,有说加个’\0’的,也有说加两个’\0’的,还有说编码方式不对的(ANSI和UNICODE),林林总总,试了好多还是没解决。
直到我把目标路径由
“E:/statistics/”
改成
“E:\statistics\”
后再次运行就好了…
就一个正斜杠和反斜杠的区别困了半天…
其它
奇怪的是,我只把目标路径中的 正斜杠 改成了 反斜杠 ,源目录并没有变,就复制成功了。没有搞明白为什么,有路过的大神还望赐教~
int CopyItem(std::string Source, std::string ObjCat)
{
SHFILEOPSTRUCT fop;
fop.wFunc = FO_COPY; // 可选FO_COPY,FO_DELETE,FO_RENAME,FO_MOVE
fop.pFrom = Source.c_str(); // 源目录
fop.pTo = ObjCat.c_str(); // 目标目录
fop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;
return SHFileOperation(&fop);
}
参考:
微软:https://learn.microsoft.com/zh-CN/windows/win32/api/shellapi/nf-shellapi-shfileoperationa
微软官方显示0xb7的含义是 “操作期间已超出MAX_PATH”。
本文介绍了一个使用SHFileOperation进行文件夹复制时遇到的问题及解决方案。问题表现为复制操作返回错误代码183,经过尝试发现将目标路径中的正斜杠改为反斜杠即可解决问题。
&spm=1001.2101.3001.5002&articleId=128203009&d=1&t=3&u=2eeac916761a42b28db422d19c20c64c)
368

被折叠的 条评论
为什么被折叠?



