Fórum Copiando SubDiretorios #337240
02/02/2007
0
´
I := FindFirst(PChar(´C:\Origem\*.*´), faAnyFile, VArquivos);
While I = 0 do
begin
if (VArquivos.Attr and faDirectory) <> faDirectory then
begin
CopyFile(PChar(´C:\origem\´+VArquivos.Name), PChar(´C:\Destino\´+VArquivos.Name), true)
end;
I := FindNext(VArquivos);
end;
´
Pergunto: como copio as subpastas e seus arquivos, de C:\Origem para C:\Destino sem ter que fazer o processo pasta por pasta?
Por exemplo, como copiar os arquivos C:\Origem\Subpasta1\ para C:\Destino\Subpasta1\ e C:\Origem\Subpasta1\ SubPasta2 para C:\Destino\Subpasta1\ SubPasta2?
Obrigado
Armindo
Curtir tópico
+ 0Posts
02/02/2007
Emerson Nascimento
procedure CopiarArquivos( Origem, Destino: string ); var i: integer; VArquivos: TSearchRec; begin if Origem[Length(Origem)] <> ´\´ then Origem := Origem + ´\´; if Destino[Length(Destino)] <> ´\´ then Destino := Destino + ´\´; ForceDirectories(ExtractFilePath(Destino)); i := FindFirst(PChar(Origem+´*.*´), faAnyFile, VArquivos); while I = 0 do begin if (VArquivos.Name <> ´.´) and (VArquivos.Name <> ´..´) then begin CopyFile(PChar(Origem+VArquivos.Name), PChar(Destino+VArquivos.Name), true); if ((VArquivos.Attr and faDirectory) <> 0) then CopiarArquivos( Origem+VArquivos.Name, Destino+VArquivos.Name ); end; I := FindNext(VArquivos); end; end;
e chame assim:
CopiarArquivos(´C:\Origem´,´C:\Destino´);
Gostei + 0
03/02/2007
Armindo
procedure CopiarArquivos( Origem, Destino: string ); var i: integer; VArquivos: TSearchRec; begin if Origem[Length(Origem)] <> ´\´ then Origem := Origem + ´\´; if Destino[Length(Destino)] <> ´\´ then Destino := Destino + ´\´; ForceDirectories(ExtractFilePath(Destino)); i := FindFirst(PChar(Origem+´*.*´), faAnyFile, VArquivos); while I = 0 do begin if (VArquivos.Name <> ´.´) and (VArquivos.Name <> ´..´) then begin CopyFile(PChar(Origem+VArquivos.Name), PChar(Destino+VArquivos.Name), true); if ((VArquivos.Attr and faDirectory) <> 0) then CopiarArquivos( Origem+VArquivos.Name, Destino+VArquivos.Name ); end; I := FindNext(VArquivos); end; end;
Mas essa é a mesma rotina que eu postei, ou seja, ela serve para copiar arquivos de um diretório. Essa rotina serve para copiar de C:\teste para C:\novapasta, mas, para copiar os arquivos de C:\teste para c:\novapasta e, na mesma rotina, copiar de c:\teste\subpasta para c:\nova pasta\subpasta, não funciona.
O que eu preciso é copiar os arquivos de um diretório e também as subpastas desse diretório.
Gostei + 0
03/02/2007
Emerson Nascimento
Gostei + 0
03/02/2007
Emerson Nascimento
procedure CopiarArquivos( Origem, Destino: string ); var i: integer; VArquivos: TSearchRec; begin if Origem[Length(Origem)] <> ´\´ then Origem := Origem + ´\´; if Destino[Length(Destino)] <> ´\´ then Destino := Destino + ´\´; ForceDirectories(ExtractFilePath(Destino)); i := FindFirst(PChar(Origem+´*.*´), faAnyFile, VArquivos); while I = 0 do begin if (VArquivos.Name <> ´.´) and (VArquivos.Name <> ´..´) then begin CopyFile(PChar(Origem+VArquivos.Name), PChar(Destino+VArquivos.Name), true); if ((VArquivos.Attr and faDirectory) = faDirectory) then CopiarArquivos( Origem+VArquivos.Name, Destino+VArquivos.Name ); end; I := FindNext(VArquivos); end; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)