复制'c:\abc\*.*' 到 'c:\ddd',希望结果是:'c:\ddd\*.*'
以下程序结果:c:\ddd\abc\*.*
1.如何修改,使其不会复制本身的目录名,能通过 TSHFILEOPSTRUCT中的参数设置么?
2.如何过滤不符合条件的文件?
function CopyDirectory(const Source, Dest: string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := PChar(source+#0);
pTo := PChar(Dest+#0);
fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR ;
end;
Result := (SHFileOperation(fo) = 0);
end;
以下程序结果:c:\ddd\abc\*.*
1.如何修改,使其不会复制本身的目录名,能通过 TSHFILEOPSTRUCT中的参数设置么?
2.如何过滤不符合条件的文件?
function CopyDirectory(const Source, Dest: string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := PChar(source+#0);
pTo := PChar(Dest+#0);
fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR ;
end;
Result := (SHFileOperation(fo) = 0);
end;
2. 你的条件是什么?根据扩展名还是其它?可以这样复制:
CopyDirectory('c:\abc\*.txt'#0'c:\abc\*.zip'#0'c:\abc\a.htm', 'c:\ddd');
但是这样就没办法带子目录一起复制了,
复杂的条件就用FindFirst,FindNext吧。
我直接用的是目录名,'c:\abc',这样就会复制目录;用扩展名时只能复制一类文件;用*.*时可以复制下子目录。
谢谢大家!