Hola Paulao.
Cita:
Quiero crear una serie de carpetas una a dentro de otra y despues mover un archivo para esta carpeta. La regla es esta:
La primera regla es crear una carpeta con los 4 primer substring(Copy(String,1,4)). Bueno, despues, viene otra carpeta que es la posicion 5 y 6 y despues la posicion 7 y 8. Quando terminar todo, entonces si mueve el archivo para esta carpeta, ademas todos los archivos.
|
Por lo que pude entender, este procedimiento hace lo que estas buscando:
Código Delphi
[-]
procedure PasarArchivos(Origen, Destino: string);
var
SR: TSearchRec;
Nombre: string;
begin
Origen:= IncludeTrailingPathDelimiter(Origen);
Destino:= IncludeTrailingPathDelimiter(Destino);
if FindFirst(Origen+'*.*',faArchive,SR) = 0 then
begin
Nombre:= Copy(ExtractFileName(SR.Name),1,
Length(ExtractFileName(SR.Name))-
Length(ExtractFileExt(SR.Name)));
ForceDirectories(Destino+Copy(Nombre,1,4));
ForceDirectories(Destino+Copy(Nombre,1,4)+'\'+Copy(Nombre,5,2));
ForceDirectories(Destino+Copy(Nombre,1,4)+'\'+Copy(Nombre,5,2)+'\'+
Copy(Nombre,7,2));
repeat
CopyFile(PChar(Origen+SR.Name),PChar(Destino+Copy(Nombre,1,4)+'\'+
Copy(Nombre,5,2)+'\'+Copy(Nombre,7,2)+'\'+SR.Name),False);
until FindNext(SR) <> 0;
end;
end;
Toma el primer nombre de archivo de la carpeta origen. De donde extrae las cadenas para crear la carpeta, la sub-carpeta y la sub-sub-carpeta. Por último copia los archivos de la carpeta orígen allí.
Nota: El código no realiza ninguna comprobación. (Como por ejemplo que haya un nombre de archivo con menos de 8 caracteres).
Saludos.