GARANTIR DESCONTO

Fórum Copiar uma pasta inteira #219460

09/03/2004

0

Galera,
Queria criar uma rotina a qual copiasse uma pasta inteira. Ou seja: tenho uma pasta com arquivos de formatos diferentes (.txt, .doc, .exe, etc...) e queria copiá-la inteira para outra pasta com nome diferente.
Ex. pasta de orígem: C:\arquivos com os arquivos novo.txt, antigo.doc, teste.exe, etc...
pasta de destino: C:\backup

estou tentando com copyfile, forcedirectories etc... mas só consegui ficar batendo cabeça!
Desde já agradeço!
Abraços,[/i]


Pedro Bugim

Pedro Bugim

Responder

Posts

09/03/2004

Vieira_alex

Amigo porque vc. não tenta criar a pasta primeiro e depois copiar os arquivos, vc. tem as rotinas para fazer isso ?


Responder

Gostei + 0

10/03/2004

Pedro Bugim

Aí é que está o problema... criar a pasta eu sei... mas não sei como copiar os arquivos para a mesma.
O problema é que a pasta que quero copiar possui centenas de arquivos com formatos diferentes, inclusive arquivos .gdb . Não posso realizar backup destes arquivos durante o dia aki na empresa, se não fica tudo lento. Desta forma, queria criar uma rotina que o fizesse sozinho, uma certa hora da noite (o servidor fica ligado dia e noite). O pgma em sí já está articulado, faltando apenas a rotina que copia os arquivos... ou seja, o principal!
estou começando a pesquisar algo sobre os componentes FileListBox e DirectoryListBox. Não sei se vai ajudar muito...
Se puder ajudar, agradeço muuuuito!
Abraços,


Responder

Gostei + 0

10/03/2004

Vieira_alex

Amigo tente assim:


{Para Criar sua Pasta}
procedure TForm1.btCriaPastaClick(Sender: TObject);
var
Dir: string;
begin
Dir := ´C:\Teste\Teste01´;
if not DirectoryExists(Dir) then
ForceDirectories(Dir);
Label1.Caption := Dir + ´ foi criado´;
end;


procedure TForm1.btCopiaArquivoClick(Sender: TObject);
var
SR: TSearchRec;
I: integer;
Origem, Destino: string;
begin
I := FindFirst(´c:\Sistema\*.doc´, faAnyFile, SR); // Local de Origem
while I = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then begin
Origem := ´c:\Sistema\´ + SR.Name;
Destino := ´c:\Teste\´ + 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.


Não esqueça de declarar FileCtrl na USES da UNIT.


Espero ter ajudado....


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar