下面这段代码可以拷贝一个目录中的所有文件到另外一个目录内,不包括子目录,有兴趣的朋友可继续.推荐采有递归的算法: var ODir,NDir:string; //分别为原始目录和新目录 FsearchRec:TsearchRec;//文件的属性类 findresult:integer;//查询文件的结果值为整型,为零时找到 begin odir:='d:\ios\';//举个例子,ODIR为一需要拷贝文件的目录 ndir:='d:\bbb\';//ndir为新的需存放拷贝后文件的目录 FindResult:=findfirst(odir+'*.*',faAnyFile+faHidden+faReadOnly,FsearchRec); try while findresult=0 do begin copyfile(pchar(odir+fsearchrec.Name),pchar(ndir+fsearchrec.Name),true); findresult:=findnext(fsearchrec); end; except showmessage('test');//测试用 end;end;
copyfile有三个参数,第一个为原文件的名称,第二个为要拷贝给的文件的文件名,第三个是看第二个是否存在的操作用winexec执行DOS命令实现拷贝,可以吗?
ODir,NDir:string; //分别为原始目录和新目录
FsearchRec:TsearchRec;//文件的属性类
findresult:integer;//查询文件的结果值为整型,为零时找到
begin
odir:='d:\ios\';//举个例子,ODIR为一需要拷贝文件的目录
ndir:='d:\bbb\';//ndir为新的需存放拷贝后文件的目录
FindResult:=findfirst(odir+'*.*',faAnyFile+faHidden+faReadOnly,FsearchRec);
try
while findresult=0 do
begin
copyfile(pchar(odir+fsearchrec.Name),pchar(ndir+fsearchrec.Name),true);
findresult:=findnext(fsearchrec);
end;
except
showmessage('test');//测试用
end;end;
Copy *.Txt C:\Temp 那olddirectory 只要传入:c:\*.txt 即可
procedure BackUp_File(OldDirectory:string;NewDirectory:string);
var
lpFileOp: TSHFileOpStruct;
FromDir:PChar;
ToDir:PChar;
begin
GetMem(FromDir, Length(OldDirectory)+2);
GetMem(ToDir, Length(NewDirectory)+2);
Try
FillChar(FromDir^, Length(OldDirectory)+2, 0);
FillChar(ToDir^, Length(NewDirectory)+2, 0);
StrCopy(FromDir, PChar(OldDirectory));
StrCopy(ToDir, PChar(NewDirectory));
lpFileop.wFunc:=FO_COPY;
lpFileop.Wnd:=Application.Handle;
lpFileop.pFrom:=FromDir;
lpFileop.pTo:=ToDir;
lpFileop.fFlags:=FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION;// or FOF_NOERRORUI;
lpFileop.fAnyOperationsAborted := False;
lpFileop.hNameMappings := nil;
lpFileop.lpszProgressTitle := nil;
SHFileOperation(lpFileop);
Finally
FreeMem(ToDir,Length(NewDirectory)+2);
FreeMem(FromDir,Length(OldDirectory)+2);
end;
end;