private void BgwNuevaEPS_DoWork(object sender, DoWorkEventArgs e) { // Inicializamos el valor de la Barra de Progreso en 0 ProgressValue = 0; // Almacenamos en la variable Tipo Lista los nombres de los archivos ListaArchivos = Lista.ListarArchivosName(dirPath, "*.txt"); // Almacenamos los nombres completos de los archivos en la variable ListaArchivosFullName ListaArchivosFullName = Lista.ListarArchivosFullName(dirPath, "*.txt"); System.IO.FileInfo[] files = new System.IO.DirectoryInfo(dirPath).GetFiles(); PeriodoArchivo = txtNombreArchivo.Text; SeparadorCarpeta = "\\"; // Cambiar Nombres de Archivos foreach (var item in files) { // Incrementamos el valor de la barra de progreso ProgressValue++; // Obtenemos el Tipo de archivo TipoArchivo = item.Name.Substring(0, 2); // Obtenemos la Extensión del archivo ExtensionArchivo = Path.GetExtension(item.Name); // Establecer el Nombre Anterior del Archivo NombreAnteriorArchivo = string.Format("{0}{1}{2}", dirPath, SeparadorCarpeta, item.Name); // Establecer el Nombre Nuevo del Archivo NombreNuevoArchivo = string.Format("{0}{1}{2}{3}{4}", dirPath, SeparadorCarpeta, TipoArchivo, PeriodoArchivo, ExtensionArchivo); // Renombrar archvios File.Move(NombreAnteriorArchivo, NombreNuevoArchivo); // Actualizar Barra de Progreso bgwNuevaEPS.ReportProgress((int)ProgressValue); } // Cambiar Nombres de Archivos en CT DirectoryInfo di = new DirectoryInfo(dirPath); foreach (var fi in di.GetFiles("*CT*", SearchOption.AllDirectories)) { String path = fi.FullName; List <String> lines = new List <String>(); if (File.Exists(path)) { using (StreamReader reader = new StreamReader(path, Encoding.GetEncoding("Windows-1252"))) { String line; while ((line = reader.ReadLine()) != null) { if (line.Contains(",")) { String[] split = line.Split(','); #region Código del Archivo // Código del Archivo - Posición 2 string codigoArchivo = split[2]; // Obtenemos el Tipo de Archivo string Tipo = codigoArchivo.Substring(0, 2); // Obtenemos el Nuevo Nombre de los Archivos string NuevoNombre = txtNombreArchivo.Text; // Reemplazamos el Nuevo Nombre split[2] = string.Format("{0}{1}", Tipo, NuevoNombre); line = String.Join(",", split); #endregion } lines.Add(line); } } using (StreamWriter writer = new StreamWriter(path, false, Encoding.GetEncoding("Windows-1252"))) { foreach (String line in lines) { writer.WriteLine(line); } } } } for (int i = 1; i <= ProgressValue; i++) { bgwNuevaEPS.ReportProgress(Convert.ToInt32(i * 100 / ProgressValue)); System.Threading.Thread.Sleep(100); } }
private void btnRutaCarpeta_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { txtRutaCarpeta.Text = folderBrowserDialog1.SelectedPath; // Ruta Directorio dirPath = folderBrowserDialog1.SelectedPath; #region Variables // Creamos una Variable Tipo Lista para almacenar los nombres de los archivos List <string> ListaArchivos = new List <string>(); // Creamos una lista para almacenar los numeros de Factura Temporales List <string> ListaNumerosFactura = new List <string>(); // Creamos una lista para almacenar los numeros de Factura Unicos List <string> ListaNumerosFacturaUnicos = new List <string>(); // Creamos una variable tipo lista para obtener el numbre completo de cada archvio, que incluye la ruta List <string> ListaArchivosFullName = new List <string>(); // Cremos una variable tipo Lista para almacenar los nombres de los directorios nuevos creados //List<string> ListaDirectorios = new List<string>(); #endregion // Almacenamos en la variable Tipo Lista los nombres de los archivos ListaArchivos = Lista.ListarArchivosName(dirPath, "*.txt"); // Almacenamos los nombres completos de los archivos en la variable ListaArchivosFullName ListaArchivosFullName = Lista.ListarArchivosFullName(dirPath, "*.txt"); foreach (var NombreArchivo in ListaArchivos) { String IdFactura; // Obtener el Numero de la Factura IdFactura = NombreArchivo.Substring(2, 6); // Agregamos los IdFactura a la Lista de Numeros de Factura ListaNumerosFactura.Add(IdFactura); } // Leemos los Nombres de las Facturas almacendads en ListaNumerosFacturas // Si en ListaNumerosFacturaUnicos estiste el Numero de ListaNumerosFactura, no hace nada // Si no existe lo ingresa en ListaNumerosFacturaUnicos foreach (var Numeros in ListaNumerosFactura) { if (ListaNumerosFacturaUnicos.Contains(Numeros)) { //MessageBox.Show("Contiene el numero " + Numeros); } else { //MessageBox.Show("No Contiene el numero " + Numeros); ListaNumerosFacturaUnicos.Add(Numeros); } } // Leemos los numeros unicos y creamos las carpetas con cada nombre foreach (var NumeroUnico in ListaNumerosFacturaUnicos) { // Directorio string folderName = dirPath; // SubCarpetas - Nombres de Facturas Unicas string pathString = System.IO.Path.Combine(folderName, NumeroUnico); //Creacion de Carpetas System.IO.Directory.CreateDirectory(pathString); } // Mover Archivos a sus Respectivos Directorios // Almacenamos en un arreglo el listado de los Directorios Nuevos string[] ListaDirectorios = System.IO.Directory.GetDirectories(dirPath); foreach (var Directorios in ListaDirectorios) { foreach (var Archivo in ListaArchivosFullName) { // NOMBRE CARPETA // Obtenemos la posicion del ultimo BackSlach para identificar donde empieza el nombre del Directorio // Se añade 1 para no obtener el BackSlach int PosicionUltimoSlash = Directorios.LastIndexOf("\\") + 1; // Obtenemos la longitud total de la cadena int LongitudNombre = Directorios.Length; // Obtenemos el Nombre de la Carpeta string nombreDirectorio = Directorios.Substring(PosicionUltimoSlash, LongitudNombre - PosicionUltimoSlash); // NOMBRE ARCHIVO // Obtenemos la posicion del ultimo BackSlach para identificar donde empieza el nombre del Archivo // Se suman dos posiciones para quitar el BackSlach y las Iniciales del Archivo de RIPS int PosicionUltimoSlashArchivo = Archivo.LastIndexOf("\\") + 3; // Obtenemos la longitud total de la cadena // Se restan 4 posiciones por la extension de los archivos int LongitudNombreArchivo = Archivo.Length - 4; // Obtenemos el Nombre del Archivo string nombreArchivo = Archivo.Substring(PosicionUltimoSlashArchivo, LongitudNombreArchivo - PosicionUltimoSlashArchivo); // Obtenemos el Nombre del Archivo incluida la Extension int Slash = Archivo.LastIndexOf("\\") + 1; int Longitud = Archivo.Length; string nombreCompleto = Archivo.Substring(Slash, Longitud - Slash); if (nombreArchivo == nombreDirectorio) { string archivoOrigen = Archivo; string archivoDestino = System.IO.Path.Combine(Directorios, nombreCompleto); System.IO.File.Move(archivoOrigen, archivoDestino); } } } } }