Winapi 递归MoveFile/CopyFile

Winapi 递归MoveFile/CopyFile,winapi,recursion,console-application,file-copying,movefileex,Winapi,Recursion,Console Application,File Copying,Movefileex,我正在使用一个控制台程序,需要使用MoveFile/CopyFile来允许移动和复制文件和目录(可能跨卷)。当然,问题是,将目录复制或移动到另一个卷无法使用上述函数,因为它们不是递归的 SHFileOperation不起作用,因为这是一个控制台应用程序,我正在使用允许进度显示的变体(MoveFileWithProgress/CopyFileEx),并且SHFileOperation使用GUI显示进度,而不是控制台 我考虑过使用FindNextFile,但即使这样,我也找不到任何代码示例,可以将F

我正在使用一个控制台程序,需要使用
MoveFile
/
CopyFile
来允许移动和复制文件和目录(可能跨卷)。当然,问题是,将目录复制或移动到另一个卷无法使用上述函数,因为它们不是递归的

SHFileOperation
不起作用,因为这是一个控制台应用程序,我正在使用允许进度显示的变体(
MoveFileWithProgress
/
CopyFileEx
),并且
SHFileOperation
使用GUI显示进度,而不是控制台

我考虑过使用
FindNextFile
,但即使这样,我也找不到任何代码示例,可以将
FindNextFile
递归地
(移动|复制)文件
,或者使用
FindNextFile
或其他方式,这是一种令人困惑的问题,因为这个问题以前一定出现过


有没有一种简单的方法可以做到这一点,还是我必须重新发明轮子?

你确定它们不是递归的吗?MSDN明确指出,您可以提供目录的路径,
MoveFile函数将移动(重命名)文件或目录(包括其子目录)
。但是请注意此免责声明:
如果文件跨卷移动,MoveFile不会随文件移动安全描述符(也在MSDN中)。@Eran,它明确表示当目标位于不同的卷上时,在目录移动时该功能将失败。当然,我误读了它。。。我在谷歌上搜索了一下,似乎有人说移动不起作用,但复制和删除起作用,但我没有找到关于如何复制的实际解释。看起来你应该自己写一个递归函数(或者从网络上取一个——到处都有)。另一种方法(在我看来不是很好,但仍然有可能)是读写整个文件夹,有点像这里解释的:@Eran,写递归函数是可能的,但很烦人,因为它必须使用FindNextFile之类的东西,而且看起来“很麻烦”。我并不反对它(也许我可以通过这种方式增加更多的灵活性),但我只是想,一定有某种更简单、内置的方式来完成这样一项显而易见的、相对普通的任务,而不仅仅是重新发明th轮子,这在编程界是一种真正的诅咒。