想将一个文件夹下面的文件都复制到另一个文件夹中,知道可以用Copyfile进行单个文件的复制,请教各位如何复制多个文件???
  如果采用循环,循环条件怎么写才能逐个复制文件?谢谢

解决方案 »

  1.   

    //------------------------------------------------------------------------------
    //涵数名:  CopyDir
    //参数:    DirName    待拷贝的文件夹
    //          DestDrive  目标文件夹
    //          IncludeSub 是否拷贝子目录
    //                     true    拷贝子目录
    //                     false   不拷贝子目录
    //          ToRecyle   是否允许取消
    //                     true    允许
    //                     false   不允许
    //------------------------------------------------------------------------------
    function TForm1.CopyDir(const DirName, DestDrive: string; const IncludeSub,
      ToRecyle: Boolean): Boolean;
    var
      fo: TSHFILEOPSTRUCT;
      tmpDir: String;
    begin
      FillChar(fo, SizeOf(fo), 0);
      with fo do
      begin
        Wnd := GetActiveWindow;
        wFunc := FO_COPY;
        pFrom := PChar(DirName + '\*.*' + #0);
        if Pos(DestDrive, '\') > 0then
          tmpDir :=  DestDrive + Copy(DirName, 3, Length(DirName) - 2)
        else
          tmpDir :=  DestDrive + '\' + Copy(DirName, 3, Length(DirName) - 2);
        if not DirectoryExists(tmpDir)then
          CreateDir(tmpDir);
        pTo := PChar(tmpDir);
        fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOERRORUI
                  or (Ord(not IncludeSub) * FOF_FILESONLY)
                  or (ORd(ToRecyle) or FOF_ALLOWUNDO);
      end;
      Result := (SHFileOperation(fo) = 0);
    end;
      

  2.   

    Findfirst()
    FindNext()study it in the Delphi's help
      

  3.   

    参考一下下面的代码, 得到文件名不就好办了么.uses 
      clipbrd, shellapi; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); 
    var 
      f: THandle; 
      buffer: Array [0..MAX_PATH] of Char; 
      i, numFiles: Integer; 
    begin 
      Clipboard.Open; 
      try 
        f:= Clipboard.GetAsHandle( CF_HDROP ); 
        If f <> 0 Then Begin 
          numFiles := DragQueryFile( f, $FFFFFFFF, nil, 0 ); 
          memo1.Clear; 
          for i:= 0 to numfiles - 1 do begin 
            buffer[0] := #0; 
            DragQueryFile( f, i, buffer, sizeof(buffer)); 
            memo1.lines.add( buffer ); 
          end; 
        end; 
      finally 
        Clipboard.close; 
      end; 
    end; 
      

  4.   

    function TForm1.CopyDir(const DirName, DestDrive: string; const IncludeSub,
      ToRecyle: Boolean): Boolean;
    var
      fo: TSHFILEOPSTRUCT;
      tmpDir: String;
    begin
      FillChar(fo, SizeOf(fo), 0);
      with fo do
      begin
        Wnd := GetActiveWindow;
        wFunc := FO_COPY;
        pFrom := PChar(DirName + '\*.*' + #0);
        if not DirectoryExists(DestDrive) then
          CreateDir(DestDrive);
        pTo := PChar(DestDrive);
        fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOERRORUI
                  or (Ord(not IncludeSub) * FOF_FILESONLY)
                  or (ORd(ToRecyle) or FOF_ALLOWUNDO);
      end;
      Result := (SHFileOperation(fo) = 0);
    end;
      

  5.   

    用findfirst函数和findnext函数,用一个while循环就可以解决得到文件夹中的所以文件名了,再一个一个的copy就ok了