예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
                        }
                    }
                }
            }
        }