Como copiar todos os arquivos de um diretorio e subdirs?
Boa tarde companheiros..
Vejam se podem me ajudar...
Como faço para copiar uma pasta completa com os arquivos e todos os subdiretorios da mesma, que por sua vez também possuem arquivos.
Vejam o que estou utilizando, mas não está copiando os subdiretórios.
Copia somente os arquivos da pasta principal.
Preciso das subpastas. O que fazer?
var
SR: TSearchRec;
I : integer;
Origem, Destino: string;
begin
I := FindFirst(´c:\Prl\*.*´, faAnyFile, SR);
while I = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then begin
Origem := c:\Prl\´ + SR.Name;
Destino := ´E:\Prl\´ + SR.Name;
if not CopyFile(PChar(Origem), PChar(Destino), False) then
Begin
ShowMessage(´Erro ao copiar!´ + Origem + ´ para ´ + Destino);
End;
end;
I := FindNext(SR);
End;
Obs: Utilizando o código acima a cópia é feita perfeitamente, apenas copiando os arquivos da pasta c:\prl para o cd. Até aí tudo bem. mas dentro da pasta PRL tenho mais 4 subdiretorios que não estão sendo copiados.
Alguém me ajuda?
Se puderem me ajudar ficarei muito grato.
Um grande abraço a todos...
Pablo - Marília/SP
Vejam se podem me ajudar...
Como faço para copiar uma pasta completa com os arquivos e todos os subdiretorios da mesma, que por sua vez também possuem arquivos.
Vejam o que estou utilizando, mas não está copiando os subdiretórios.
Copia somente os arquivos da pasta principal.
Preciso das subpastas. O que fazer?
var
SR: TSearchRec;
I : integer;
Origem, Destino: string;
begin
I := FindFirst(´c:\Prl\*.*´, faAnyFile, SR);
while I = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then begin
Origem := c:\Prl\´ + SR.Name;
Destino := ´E:\Prl\´ + SR.Name;
if not CopyFile(PChar(Origem), PChar(Destino), False) then
Begin
ShowMessage(´Erro ao copiar!´ + Origem + ´ para ´ + Destino);
End;
end;
I := FindNext(SR);
End;
Obs: Utilizando o código acima a cópia é feita perfeitamente, apenas copiando os arquivos da pasta c:\prl para o cd. Até aí tudo bem. mas dentro da pasta PRL tenho mais 4 subdiretorios que não estão sendo copiados.
Alguém me ajuda?
Se puderem me ajudar ficarei muito grato.
Um grande abraço a todos...
Pablo - Marília/SP
Pablo_lima
Curtidas 0
Respostas
Joilson_gouveia
10/09/2003
Tente usar o exemplo abaixo:
366 - Copiando arquivos usando o Shell do Windows
Coloque no uses: ShellApi
{ - Coloque um botão no form e altere o evento OnClick deste botão conforme abaixo:}
procedure TForm1.Button1Click(Sender: TObject);
var
Dados: TSHFileOpStruct;
begin
FillChar(Dados,SizeOf(Dados), 0);
with Dados do
begin
wFunc := FO_COPY;
pFrom := PChar(´c:\teste\*.txt´);
pTo := PChar(´a:\´);
fFlags:= FOF_ALLOWUNDO;
end;
SHFileOperation(Dados);
end;
Observações:
Esta forma de copiar arquivos oferecem várias vantagens. O Shell avisa para pôr um próximo disco quando o atual estiver cheio. Mostra a barra de progresso. Pode copiar arquivos usando máscara de uma forma extremamente simples.
366 - Copiando arquivos usando o Shell do Windows
Coloque no uses: ShellApi
{ - Coloque um botão no form e altere o evento OnClick deste botão conforme abaixo:}
procedure TForm1.Button1Click(Sender: TObject);
var
Dados: TSHFileOpStruct;
begin
FillChar(Dados,SizeOf(Dados), 0);
with Dados do
begin
wFunc := FO_COPY;
pFrom := PChar(´c:\teste\*.txt´);
pTo := PChar(´a:\´);
fFlags:= FOF_ALLOWUNDO;
end;
SHFileOperation(Dados);
end;
Observações:
Esta forma de copiar arquivos oferecem várias vantagens. O Shell avisa para pôr um próximo disco quando o atual estiver cheio. Mostra a barra de progresso. Pode copiar arquivos usando máscara de uma forma extremamente simples.
GOSTEI 0