我需要使用Delphi 7将一个文件夹中的所有内容(文件、文件夹和子文件夹)移动到另一个文件夹中。经过一些研究,SHFileOpStruct似乎是最好的选择。以下是我目前得到的代码:
function MoveDir(SrcDir, DstDir: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
ZeroMemory(@FOS, SizeOf(FOS));
with FOS do
begin
wFunc := FO_MOVE; // FO_COPY;
fFlags := FOF_FILESONLY or
FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS;
pFrom := PChar(SrcDir + #0);
pTo := PChar(DstDir + #0);
end;
Result := (SHFileOperation(FOS) = 0);
end;
但是使用此函数时,整个文件夹都会被移动到目标位置,而不仅仅是它的内容。例如,如果我使用MoveDir('c:\test', 'd:\test'),我会得到d:\teste\teste。
我已经尝试更改下面的这行代码,在复制文件(FO_COPY)时它可以工作,但在移动文件时却不行。
pFrom := PChar(SrcDir + '\*.*' + #0);
请问有没有人能帮我解决这个问题?如果不需要逐个移动文件和文件夹就能解决,那就太好了。
谢谢!!
'\*.*'
)对我来说是有效的,只需删除FOF_FILESONLY
标志即可... 你使用的是哪个 Windows 版本?返回了什么错误代码? - GabrielF