Hola ingmichel.
Cita:
Empezado por ingmichel
...resulta que tengo una carpeta A con los subdirectorios 1,2,3 cada subdirectorio contiene archivos, lo que necesito es crear una rutina que me copie los subdirectos que existen en la carpeta A que no existen en la carpeta B...
|
Según interpreto de tu consulta,
Código Delphi
[-]
uses ShellApi;
procedure CopyNonExistsFolders(Source, Target: string);
var
SR: TSearchRec;
ToCopy: Boolean;
F : SHFILEOPSTRUCT;
begin
Source := IncludeTrailingPathDelimiter(Source);
Target := IncludeTrailingPathDelimiter(Target);
if FindFirst(Source + '*.*', faDirectory, SR) = 0 then
repeat
ToCopy := ((SR.Attr and faDirectory) = faDirectory) and
(SR.Name <> '.') and (SR.Name <> '..') and
not DirectoryExists(Target + SR.Name);
if ToCopy then
begin
F.Wnd := Application.Handle;
F.wFunc := FO_COPY;
F.pFrom := PChar(Source+SR.Name+#0);
F.pTo := PChar(Target+#0);
F.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
ShFileOperation(F);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
Ejemplo de uso:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyNonExistsFolders('C:\SourceFolder', 'C:\TargetFolder');
end;
Saludos