예제 #1
0
        private void mnuCopiarArchivos_Click(object sender, EventArgs e)
        {
            Ookii.Dialogs.VistaFolderBrowserDialog fbd = new Ookii.Dialogs.VistaFolderBrowserDialog();

            fbd.ShowDialog(this);

            if (Directory.Exists(fbd.SelectedPath))
            {
                RutaCopia = fbd.SelectedPath;

                //Bloquear controles
                Des_HabilitarControles(false);
                pnlEngine.Visible  = true;
                pnlEngine.Enabled  = true;
                pbEngine.Enabled   = true;
                pnlEngine.Location = gbResultados.Location;
                pnlEngine.Size     = gbResultados.Size;
                pnlEngine.BringToFront();

                //Preparar copia
                FechaIni           = DateTime.Now;
                ListaArchivosCopia = new List <ArchivoCopia> {
                };
                ArchivoCopia archivoC = new ArchivoCopia();

                for (int w = 0; w < lstArchivos.Items.Count; w++)
                {
                    if (lstArchivos.Items[w].Checked)
                    {
                        archivoC = new ArchivoCopia(lstArchivos.Items[w].SubItems[cEquipo].Text,
                                                    lstArchivos.Items[w].SubItems[cRuta].Text,
                                                    lstArchivos.Items[w].SubItems[cArchivo].Text,
                                                    lstArchivos.Items[w].SubItems[cUnidad].Text);

                        ListaArchivosCopia.Add(archivoC);
                    }
                }

                pb01.Visible = true;
                pb01.Value   = 0;

                pbFile.Visible = true;
                pbFile.Value   = 0;

                pnlProgreso.Visible = true;

                wkrCopia.RunWorkerAsync();
            }
            else
            {
                MessageBox.Show("El directorio no existe.", "Error al copiar", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
예제 #2
0
        private void wkrCopia_DoWork(object sender, DoWorkEventArgs e)
        {
            int    TotalArchivos = ListaArchivosCopia.Count;
            string Usuario       = System.Configuration.ConfigurationManager.AppSettings["UsuarioS"];
            string Password      = System.Configuration.ConfigurationManager.AppSettings["Password"];
            string Dominio       = System.Configuration.ConfigurationManager.AppSettings["Dominio"];

            if (string.IsNullOrWhiteSpace(Usuario))
            {
                Usuario = null;
            }

            if (string.IsNullOrWhiteSpace(Password))
            {
                Password = null;
            }

            for (int w = 0; w < TotalArchivos; w++)
            {
                ArchivoCopia archivoC = new ArchivoCopia(ListaArchivosCopia[w].Equipo,
                                                         ListaArchivosCopia[w].Ruta,
                                                         ListaArchivosCopia[w].Archivo,
                                                         ListaArchivosCopia[w].Unidad);

                try
                {
                    archivoC.ArchivoFinal = archivoC.Archivo;
                    ActualizarProgressBar(pb01, Convert.ToInt32(Math.Round(Convert.ToDouble(w * 100) / TotalArchivos, 2)));

                    while (File.Exists(Path.Combine(RutaCopia, archivoC.ArchivoFinal)))
                    {
                        archivoC.ArchivoFinal = Path.GetFileNameWithoutExtension(archivoC.Archivo) + "_" + DateTime.Now.ToString("yyyyMMddff") + Path.GetExtension(archivoC.Archivo);
                    }

                    if (Usuario == null || Password == null)
                    {
                        //File.Copy(ObtenerRutaCopia(archivoC.Equipo, archivoC.Ruta, archivoC.Archivo, archivoC.Unidad), Path.Combine(RutaCopia, archivoC.ArchivoFinal), false);
                        XCopy.Copy(ObtenerRutaCopia(archivoC.Equipo, archivoC.Ruta, archivoC.Archivo, archivoC.Unidad), Path.Combine(RutaCopia, archivoC.ArchivoFinal), false, true, (o, pce) =>
                        {
                            wkrCopia.ReportProgress(pce.ProgressPercentage, archivoC.Archivo);
                        });
                    }
                    else
                    {
                        using (new Impersonator(Usuario, Dominio, Password))
                        {
                            //File.Copy(ObtenerRutaCopia(archivoC.Equipo, archivoC.Ruta, archivoC.Archivo, archivoC.Unidad), Path.Combine(RutaCopia, archivoC.ArchivoFinal), false);
                            XCopy.Copy(ObtenerRutaCopia(archivoC.Equipo, archivoC.Ruta, archivoC.Archivo, archivoC.Unidad), Path.Combine(RutaCopia, archivoC.ArchivoFinal), false, true, (o, pce) =>
                            {
                                wkrCopia.ReportProgress(pce.ProgressPercentage, archivoC.Archivo);
                            });
                        }
                    }

                    ListaArchivosCopia[w] = archivoC;
                }
                catch (Exception ex)
                {
                    archivoC.ArchivoFinal = ex.Message.Replace("\n", ";").Replace("\r", ";");
                    ListaArchivosCopia[w] = archivoC;
                }
            }

            ExportarExcel excel = new ExportarExcel();

            excel.GenerarExcel(ListaArchivosCopia.ToDataTable().CreateDataReader(), RutaCopia, GeneraNombreArchivoRnd("Rpt_", "xlsx"), 500000);
        }