2009-06-27 9 views

Antwort

2

können Sie System.IO.Directory.CreateDirectory (Pfad) verwenden. Es ist eine statische Methode im Gegensatz zu DirectoryInfo, wo Sie eine Instanz eines Verzeichnisses benötigen, um es aufzurufen.

Danach können Sie Xcopy oder Robocopy verwenden, um alle Dateien und Unterverzeichnisse zu kopieren.

+0

So würde das schaffen mir einen Weg wie Z: \ Stuff \ Windows \ ... so weiter bis zu inetsrv? – dotnetdev

+0

@dotnetdev: Es werden alle Teile des Pfades erstellt, die nicht existieren. Außer natürlich, aus dem Laufwerksbuchstabe;) –

+0

Xcopy c: \ windows z: \ Stuff/s würde. Überprüfen Sie die Optionen in Xcopy, um genau anzugeben, was Sie möchten. Sie können Xcopy über C# aufrufen, indem Sie einen neuen Prozess starten. – jvanderh

1

Wenn Sie alles von einem Verzeichnis in ein anderes kopieren möchten, können Sie so etwas wie folgt verwenden:

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