Copiar uma pasta inteira
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]
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
Curtidas 0
Respostas
Vieira_alex
09/03/2004
Amigo porque vc. não tenta criar a pasta primeiro e depois copiar os arquivos, vc. tem as rotinas para fazer isso ?
GOSTEI 0
Pedro Bugim
09/03/2004
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,
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,
GOSTEI 0
Vieira_alex
09/03/2004
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....
{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....
GOSTEI 0