Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // OrtizOL - xCSw - http://ortizol.blogspot.com
  2.  
  3. using System;
  4. using System.IO;
  5.  
  6. namespace Receta.CSharp.R0503
  7. {
  8.     public class CopiarContenidoDirectorio
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             Console.WriteLine();
  13.            
  14.             // Comprueba que se hayan pasado argumentos desde
  15.             // la línea de comandos:
  16.             if (args.Length != 2)
  17.             {
  18.                 Console.WriteLine("Uso desde la línea de comandos: \n" +
  19.                                   "\tCopiarContenidoDirectorio.exe [RutaOrigen] [RutaDestino]");
  20.                
  21.                 Console.ReadLine();
  22.                
  23.                 return;
  24.             }
  25.            
  26.             // Directorios de orgien y destino:
  27.             DirectoryInfo directorioOrigen = new DirectoryInfo(args[0]);
  28.             DirectoryInfo directorioDestino = new DirectoryInfo(args[1]);
  29.            
  30.             // Invoca al método `CopiarDirectorio` para copiar el
  31.             // contenido de la ruta de origen a la ruta de destino:
  32.             CopiarDirectorio(directorioOrigen, directorioDestino);
  33.            
  34.             Console.WriteLine("Copia satisfactoria.");
  35.            
  36.             Console.WriteLine();
  37.         }
  38.        
  39.         public static void CopiarDirectorio(DirectoryInfo origen, DirectoryInfo destino)
  40.         {
  41.             // Comprueba que el destino exista:
  42.             if (!destino.Exists)
  43.             {
  44.                 destino.Create();
  45.             }
  46.            
  47.             // Copia todos los archivos del directorio actual:
  48.             foreach(FileInfo archivo in origen.EnumerateFiles())
  49.             {
  50.                 archivo.CopyTo(Path.Combine(destino.FullName, archivo.Name));
  51.             }
  52.            
  53.             // Procesamiento recursivo de subdirectorios:
  54.             foreach (DirectoryInfo directorio in origen.EnumerateDirectories())
  55.             {
  56.                 // Obtención de directorio de destino:
  57.                 string directorioDestino = Path.Combine(destino.FullName, directorio.Name);
  58.                
  59.                 // Invocación recursiva del método `CopiarDirectorio`:
  60.                 CopiarDirectorio(directorio, new DirectoryInfo(directorioDestino));
  61.             }
  62.         }
  63.     }
  64. }