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); } }
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); }