Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Copiar solo subdirectorios nuevos (https://www.clubdelphi.com/foros/showthread.php?t=88922)

ingmichel 27-08-2015 01:54:34

Copiar solo subdirectorios nuevos
 
Saludos colegas de delphi espero se encuentren bien, tengo una consulta a ver si alguien me puede ayudar, 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 es decir,
si hoy en la carpeta A tengo los subdirectorios 1,2,3 y los copio a la carpeta B, entonces si mañana agrego los directorio 4,5,6 a la carpeta A, solo copiar los subdirectorios nuevos a la carpeta B, en este caso 4,5,6,

nota. cada sub directorio contiene archivos, necesito copiar subdirectorios con sus archivos.


gracias de antemano.

Casimiro Notevi 27-08-2015 02:01:04

Una vez que los has leido del origen, antes de grabar en el destino verificas que no exista:
Código Delphi [-]
if not directoryexist(sourcedir) then
  copiar( .... )

ingmichel 27-08-2015 02:10:25

re
 
Saludos casimiro, gracias por responder, la funcion directoryexists me permite unicamente especificar un directorio en especifico, y en realidad necesitaria validar que no existan multiples directorios en mi caso, como haria esto ?
Cita:

Empezado por Casimiro Notevi (Mensaje 495905)
Una vez que los has leido del origen, antes de grabar en el destino verificas que no exista:
Código Delphi [-]
if not directoryexist(sourcedir) then
  copiar( .... )


ecfisa 27-08-2015 04:55:09

Hola ingmichel.
Cita:

Empezado por ingmichel (Mensaje 495904)
...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 :)


La franja horaria es GMT +2. Ahora son las 05:45:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi