Hacer un subdirectorio con una estructura de carpetas a partir de parte de una ruta

StackOverflow https://stackoverflow.com/questions/1053452

  •  20-08-2019
  •  | 
  •  

Pregunta

Si tengo una ruta, así:

  

c: \ windows \ system32 \ inetsrv \ abc.exe

Y quiero hacer una carpeta debajo de una unidad / ruta como

  

Z: \ Stuff \

¿Cómo puedo hacer un subdirectorio y seleccionar si quiero todo, desde Windows en adelante, system32 en adelante o inetsrv en adelante? Por cierto, sé que DirectoryInfo tiene un método llamado CreateSubDirectory().

Gracias

¿Fue útil?

Solución

Puede usar System.IO.Directory.CreateDirectory (ruta). Es un método estático, a diferencia de DirectoryInfo, donde necesita una instancia de un directorio para llamarlo.

Después de eso, puede usar Xcopy o Robocopy para copiar todos los archivos y subdirectorios.

Otros consejos

Si desea copiar todo de un directorio a otro, puede usar algo como esto:

using System;
using System.Collections.Generic;
using System.IO;

namespace so_cp__r
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter path from where you want to copy:");
            List<DirectoryInfo> fromDirs = new List<DirectoryInfo>();
            DirectoryInfo dir = new FileInfo(Console.ReadLine()).Directory;
            while (dir != null)
            {
                fromDirs.Add(dir);
                dir = dir.Parent;
            }
            for (int i = 0; i < fromDirs.Count; i++)
                Console.WriteLine("{0}: {1}", i, fromDirs[i].FullName);
            Console.WriteLine("From which of these dirs do you want to start?");
            DirectoryInfo fromDir = fromDirs[int.Parse(Console.ReadLine())];
            Console.WriteLine("Where do you want to copy?");
            DirectoryInfo toDir = new DirectoryInfo(Console.ReadLine());
            recursive_copy(fromDir, toDir);
        }

        static void recursive_copy(DirectoryInfo fromDir, DirectoryInfo toDir)
        {
            DirectoryInfo child = toDir.CreateSubdirectory(fromDir.Name);
            foreach (FileInfo file in fromDir.GetFiles())
                file.CopyTo(child.FullName + Path.DirectorySeparatorChar + file.Name);
            foreach (DirectoryInfo dir in fromDir.GetDirectories())
                recursive_copy(dir, child);
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top