Copiar arquivos usando curingas (*.*) no Delphi
{ - Coloque um Button no Form;
  - Altere o evento OnClick deste Button conforme abaixo: }

procedure TForm1.Button2Click(Sender: TObject);
var
  SR: TSearchRec;
  I: integer;
  Origem, Destino: string;
begin
  I := FindFirst('c:\Origem\*.*', faAnyFile, SR);
  while I = 0 do begin
    if (SR.Attr and faDirectory) <> faDirectory then begin
      Origem := 'c:\Origem\' + SR.Name;
      Destino := 'c:\Destino\' + SR.Name;
      if not CopyFile(PChar(Origem), PChar(Destino), true) then
        ShowMessage('Erro ao copiar ' + Origem + ' para ' + Destino);
    end;
    I := FindNext(SR);
  end;
end;

No exemplo acima, se o arquivo já existir no destino, a função falha (não copia).
Para que a função possa sobreescrever o arquivo destino (caso exista), altere o último parâmetro de CopyFile para false.
CUIDADO! Se um arquivo for sobreescrito, estará perdido para sempre!