Copiar Directoritos y Subdirectorios

 




Estos días en un grupo de WhatsApp un compañero preguntaba cómo mover archivos de una carpeta a otra de forma masiva. 

En PowerBuilder existe la función FileMove (string sourcefile, string targetfile ) y la función FileCopy ( string sourcefile, string targetfile {, boolean replace } ) que nos permiten mover o copiar archivos de uno en uno.

Para obtener todos los archivos de un directorio, necesitamos usar un control visual Listbox para usar la función DirList (string  filespec, uint filetype {, statictext } ) y luego recorriéndolo con bucle For, por ejemplo, podemos ir copiando o moviendo los archivos de uno en uno....

Bien, como tenia por ahí este ejemplo de mi artículo del 20 de Enero de 2022 PowerBuilder FileService (C# System.IO) he decidido añadir una fundón más que nos permita hacer este trabajo de sin tantos rodeos y con pocas líneas de código. 

He creado la función:

CopyDirectory(string sourcedir, string destinationdir, boolean  recursive {, string searchpattern } )

Con esta función podemos copiar todos los archivos y estructras de directorios de una ubicación a otra y además se permite introducir un patrón de búsqueda para, por ejemplo, sólo copiar archivos pdf (*.pdf).

Con el ejemplo de la primera imagen el resultado podría ser el siguiente:



Como plus, he añadido una una función en la ventana principal w_main del ejemplo para remplazar la función de PowerBuilder GetFolder(). La he llamado wf_GetFolder y usa una función externa llamada GetFolderDialog de la librería  getfolderdialog_x64.dll.

Esta ventana nos permite elegir una carpeta de una forma mucho mas elegante y además nos permite crear nuevos directorios:

Comentarios