Advertisement
informaticage

DeviceCloner

Dec 20th, 2016
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.58 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.IO;
  4.  
  5. namespace NJP
  6. {
  7.     /**
  8.      * How to use:
  9.      * NJP.DeviceCloner.CloneAllDevices("C:\FolderWhereToClone", true);
  10.      */
  11.     public class DeviceCloner
  12.     {
  13.         public static ArrayList GetConnectedDevices()
  14.         {
  15.             DriveInfo[] allDrives = DriveInfo.GetDrives();
  16.             ArrayList connectedDevicesLetters = new ArrayList();
  17.             try
  18.             {
  19.                 foreach (DriveInfo device in allDrives)
  20.                 {
  21.                     connectedDevicesLetters.Add(device.Name);
  22.                 }
  23.             }
  24.             catch (Exception)
  25.             { }
  26.             connectedDevicesLetters.Remove("C:\\");
  27.             connectedDevicesLetters.Remove("D:\\");
  28.             return connectedDevicesLetters;
  29.         }
  30.        
  31.         public static void CloneAllDevices(string destDirName, bool copySubDirs)
  32.         {
  33.             try
  34.             {
  35.                 foreach (string device in DeviceCloner.GetConnectedDevices())
  36.                 {
  37.                     DeviceCloner.CloneDevice(device, destDirName, true);
  38.                 }
  39.             }
  40.             catch (Exception)
  41.             { }
  42.         }
  43.  
  44.         public static void CloneDevice(string sourceDirName, string destDirName, bool copySubDirs)
  45.         {
  46.             // Get the subdirectories for the specified directory.
  47.             DirectoryInfo dir = new DirectoryInfo(sourceDirName);
  48.  
  49.             if (dir.Exists)
  50.             {
  51.                 DirectoryInfo[] dirs = dir.GetDirectories();
  52.                 // If the destination directory doesn't exist, create it.
  53.                 if (!Directory.Exists(destDirName))
  54.                 {
  55.                     Directory.CreateDirectory(destDirName);
  56.                 }
  57.  
  58.                 // Get the files in the directory and copy them to the new location.
  59.                 FileInfo[] files = dir.GetFiles();
  60.                 foreach (FileInfo file in files)
  61.                 {
  62.                     string temppath = Path.Combine(destDirName, file.Name);
  63.                     file.CopyTo(temppath, false);
  64.                 }
  65.  
  66.                 // If copying subdirectories, copy them and their contents to new location.
  67.                 if (copySubDirs)
  68.                 {
  69.                     foreach (DirectoryInfo subdir in dirs)
  70.                     {
  71.                         string temppath = Path.Combine(destDirName, subdir.Name);
  72.                         CloneDevice(subdir.FullName, temppath, copySubDirs);
  73.                     }
  74.                 }
  75.             }
  76.         }
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement