和楼上的思路相同,只是我的已经做成了函数哦。而且同时兼顾拷贝和删除文件夹
//文件(夹)拷贝或删除 参数nLx:1、拷贝;2、删除(cMdwjj)
Function Copy_Dir(cYwjj,cMdwjj:String;nLx:Integer):Bool;
Var
Opstruc: TshFileOpStruct;
frombuf,tobuf: Array[0..128] of Char;
begin
FillChar(frombuf,Sizeof(frombuf),0);
FillChar(tobuf,Sizeof(tobuf),0);
StrPcopy(frombuf,cYwjj);
Case nLx of
1:
StrPcopy(tobuf,cMdwjj);
end;
With Opstruc Do
Begin
Wnd:=0;
Case nLx of
1: wFunc:=FO_COPY;
2: wFunc:=FO_DELETE;
Else wFunc:=FO_COPY;
end;
pFrom:=@frombuf;
pTo:=@tobuf;
fFlags:=FOF_NOCONFIRMATION;
fAnyOperationsAborted:=False;
hNameMappings:=Nil;
lpszProgressTitle:=Nil;
end;
try
ShFileOperation(OpStruc);
Result:=True;
except
Result:=False;
end;
调用示例:
拷贝:将当前目录下data目录拷至c:/windows/temp下。
Copy_dir('data','c:/windows/temp',1);
删除:将c:/windows/temp下的data文件夹删除。
Copy_dir('c:/Windows/Temp/data','',2);
对于文件的处理与上类同。
end;