private void fRecursiva (string origen, string destino) { string[] ficheros, directorios; string nombre, carpeta; int nficheros, ndirectorios; //copio todos los ficheros: nficheros = Directory.GetFiles(origen).GetLength(0); if (nficheros > 0) { ficheros = Directory.GetFiles(origen); for (int i = 0; i < Directory.GetFiles(origen).Length; i++) { nombre = Path.GetFileName(ficheros[i]); File.Copy(ficheros[i], destino + "\\" + nombre, true); } } //entro en los directorios ndirectorios = Directory.GetDirectories(origen).GetLength(0); if ( ndirectorios > 0) { directorios = Directory.GetDirectories(origen); for (int i = 0; i < Directory.GetDirectories(origen).Length; i++) { carpeta = Path.GetFileName(directorios[i]); Directory.CreateDirectory(destino + "\\" + carpeta); fRecursiva(directorios[i], destino + "\\" + carpeta); } } }