private void BgwSuraArchivos_DoWork(object sender, DoWorkEventArgs e) { // Inicializamos el valor de la Barra de Progreso en 0 progressValue = 0; // Obtener Nombres de Directorios //DirectoryInfo informacionDirectorio = new DirectoryInfo(dirPath); // Almacenamos los nombres completos de los archivos en la variable ListaArchivosFullNameRecursive ListaArchivosFullNameRecursive = Lista.ListarArchivosFullNameRecursive(dirPath, "*.pdf"); // Obtenemos el Numero de Archivos numeroArchivos = ListaArchivosFullNameRecursive.Count(); // Almacenamos en la variable Tipo Lista los nombres de los archivos ListaArchivos = Lista.ListarArchivosNameRecursive(dirPath, "*.pdf"); // Almacenamos en la variable Tipo Lista los nombres de la Subcarpetas del la Carpeta Principal ListaCarpetas = Lista.ListarNombresCarpetas(dirPath); // Separador Carpetas separadorCarpeta = "\\"; foreach (var item in ListaArchivosFullNameRecursive) { // Incrementamos el valor de la barra de progreso progressValue++; // Obtenemos nombre de la carpeta que contiene los archivos directoryName = Path.GetFileName(Path.GetDirectoryName(item)); // Obtenemos la ruta completa fullDirectoryName = Path.GetDirectoryName(item); // Obtenemos el Numero de la Factura numeroFactura = ExtractNumber(directoryName); // Obtenemos el Nombre del Archivo nombreArchivo = Path.GetFileName(item); // Obtenemos la Extensión del archivo extensionArchivo = Path.GetExtension(nombreArchivo); // Establecemos las variables para el nombre del archivo string tipoSoporteFactura = "IMGFACTURA"; string tipoSoporte = "IMGSOPORTES"; string nitSopore = "890981494"; string alfaSoporte = "FE"; if (nombreArchivo.StartsWith("FE")) { // Establecer el Nombre Anterior del Archivo nombreAnteriorArchivo = string.Format("{0}{1}{2}", fullDirectoryName, separadorCarpeta, nombreArchivo); // Establecer el Nombre Nuevo del Archivo nombreNuevoArchivo = string.Format("{0}{1}{2}_{3}_{4}{5}{6}", fullDirectoryName, separadorCarpeta, tipoSoporteFactura, nitSopore, alfaSoporte, numeroFactura, extensionArchivo); // Renombrar archvios File.Move(nombreAnteriorArchivo, nombreNuevoArchivo); } else if (nombreArchivo.StartsWith("SOPORTE")) { // Establecer el Nombre Anterior del Archivo nombreAnteriorArchivo = string.Format("{0}{1}{2}", fullDirectoryName, separadorCarpeta, nombreArchivo); // Establecer el Nombre Nuevo del Archivo nombreNuevoArchivo = string.Format("{0}{1}{2}_{3}_{4}{5}{6}", fullDirectoryName, separadorCarpeta, tipoSoporte, nitSopore, alfaSoporte, numeroFactura, extensionArchivo); // Renombrar archvios File.Move(nombreAnteriorArchivo, nombreNuevoArchivo); } // Actualizar Barra de Progreso bgwArchivo.ReportProgress((int)progressValue); } // Recorremos Carpetas Principales foreach (var folder in ListaCarpetas) { // Obtenemos nombre de la carpeta que contiene los archivos directoryName = new DirectoryInfo(folder).Name; // Almacenamos los nombres de los archivos ListaArchivosFullName = Lista.ListarArchivosFullNameRecursive(folder, "*.pdf"); // Extaemos el Número de la Factura string numeroFactura = ExtractNumber(directoryName); // Establecemos las variables para el nombre de la carpeta string nit = "890981494"; string prefijo = "FE"; string valorAF = ""; string sufijo = "PBS"; string nombreCarpeta = ""; // Almacenamos en la variable Tipo Lista los nombres de la Carpetas que Contienen los RIPS ListaCarpetasRIPS = Lista.ListarNombresCarpetas(folder); // Recorremos Subcarpeta con RIPS foreach (var folderRIPS in ListaCarpetasRIPS) { // Obtenemos el Valor del AF valorAF = Lista.valorAF(folderRIPS, "*AF*"); } int valor = (int)Convert.ToDouble(valorAF); nombreCarpeta = string.Format("{0}_{1}_{2}_{3}_{4}", nit, prefijo, numeroFactura, valor, sufijo); string nuevaCarpeta = string.Format("{0}\\{1}", folder, nombreCarpeta); // Creamos Carpeta Principal Con Soportes en PDF Directory.CreateDirectory(nuevaCarpeta); // Mover Soportes en PDF a la Nueva Carpeta Creada foreach (var item in ListaArchivosFullName) { string sourceFile = item; string fileName = Path.GetFileName(item); string destinationFile = string.Format("{0}\\{1}", nuevaCarpeta, fileName); File.Move(sourceFile, destinationFile); } } }