怎样拷贝整个目录到指定地点,急急急!!!!!!!!!!!!!!1(200分)

  • 主题发起人 主题发起人 一剑封喉
  • 开始时间 开始时间

一剑封喉

Unregistered / Unconfirmed
GUEST, unregistred user!
现在已知一个目录AA,它底下有目录若干(未知),举例为A1---A10,现在要把A1---A10一起拷贝到
指定的地点,如果存在A1---A10中的目录则覆盖,覆盖不需要提示,不知道各位大侠有何高招
注意:A1--A10目录底下还有很多未知目录。
 
SHFileOperation 就可以
 
1:最简单的方法:
WinExec(PChar('C:/WINDOWS/COMMAND.COM /C XCOPY AA/*.* TargetDir/ /s/e'),SW_HIDE);

2:用API函数ShFileOperation():
use ShellAPI;

procedure CopyDirectoryTree(AHandle: THandle; AFromDir, AToDir: String);
var SHFileOpStruct: TSHFileOpStruct;
begin
; with SHFileOpStruct do
; begin
; ; Wnd := AHandle;
; ; WFunc := FO_Copy;
; ; pFrom := PChar(AFromDir);
; ; pTo := PChar(AToDir);
; ; fFlags := FOF_NOCONFIRMATION OR FOF_RENAMEONCOLLISION;
; ; fAnyOperationsAborted := False;
; ; hNameMappings := Nil;
; ; lpszProgressTitle := Nil;
; ; end;
; ShFileOperation(SHFileOpStruct);
end;?????
 
[:)] 同意楼上
 
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;
 
非常感谢大家的参与,可是我是想拷贝AA(见标题)下的A1---A10到指定目录,可是现在已
知的是AA目录,用各位的方法一试,是将AA整个拷贝到指定目录下了,而不是将A1----A10拷贝了
不知道你们明白没有明白。
 
用这个API可以实现,不过拷多个文件比拷整个目录要麻烦一些,这里写的很清楚
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/Functions/SHFileOperation.asp
 
tiany,你这不是MSDN吗?我知道的,不过现在我说的这个问题,我看了看好象不能用这个结构体
来实现,难道要拷贝一个目录下的所有目录到另外一个目录中,非得要先把这些目录先找到,
放到一个集合中,然后,一个一个拷贝到另外一个目录中吗?就没有其他好的方法吗?
 
怎样拷贝目录
How to Copy A Directory?
In Win32 there is an API function for that: SHFileOperation.
copy a whole directory tree
procedure TForm1.Button2Click(Sender: TObject);
var
; OpStruc: TSHFileOpStruct;
; frombuf, tobuf: Array [0..128] of Char;
Begin
; FillChar( frombuf, Sizeof(frombuf), 0 );
; FillChar( tobuf, Sizeof(tobuf), 0 );
; StrPCopy( frombuf, 'd:/brief/*.*' );
; StrPCopy( tobuf, 'd:/temp/brief' );
; With OpStruc DO Begin
; ; Wnd:= Handle;
; ; wFunc:= FO_COPY;
; ; pFrom:= @frombuf;
; ; pTo:=@tobuf;
; ; fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
; ; fAnyOperationsAborted:= False;
; ; hNameMappings:= Nil;
; ; lpszProgressTitle:= Nil;
; end;
; ShFileOperation( OpStruc );
end;

;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部