private void copyWorker_DoWork(object sender, DoWorkEventArgs e) { var worker = sender as BackgroundWorker; this.CopyInProgress = true; worker.ReportProgress(0); var directories = Directory.GetDirectories(source, "*", System.IO.SearchOption.AllDirectories); var files = Directory.GetFiles(source, "*.*", System.IO.SearchOption.AllDirectories); var total = directories.Length + files.Length; int complete = 0; foreach (string dir in directories) { if (!ExcludedDirectories.Contains(dir)) { Directory.CreateDirectory(destination + dir.Substring(source.Length)); } complete++; worker.ReportProgress(CalculateProgress(total, complete)); } foreach (string file_name in files) { if (!File.Exists(Path.Combine(destination + file_name.Substring(source.Length)))) { File.Copy(file_name, destination + file_name.Substring(source.Length)); } complete++; worker.ReportProgress(CalculateProgress(total, complete)); } }
private void ProcessDestinationDirectoryForPossibleDelete(DirectoryInfo di) { //Get the source directory string srcDirectory = SourceDirectory + di.FullName.Substring(DestinationDirectory.Length); var srcDir = new DirectoryInfo(srcDirectory); try { //Delete the destination directory if it doesn't exist at the source // or if the directory is in the ignore list but is present at the destination if (!Directory.Exists(srcDirectory) || ExcludedDirectories.Contains(srcDirectory)) { try { ActionQueue.Enqueue(new DeleteFolderAction(di.FullName)); OnActionAddedToQueue(new EventArgs()); } catch (Exception ex) { _log.ErrorFormat("ProcessDestinationDirectoryForPossibleDelete: {0} {1}", di.FullName, ex.Message); } } else { foreach (FileInfo fi in di.GetFiles("*.*", SearchOption.TopDirectoryOnly)) { string srcPath = srcDir + "\\" + fi.Name; try { Debug.WriteLine(di.FullName); //Delete the destination file if it doesn't exist at the source if (!File.Exists(srcPath)) { ActionQueue.Enqueue(new DeleteFileAction(fi.FullName)); OnActionAddedToQueue(new EventArgs()); } } catch (Exception ex) { _log.ErrorFormat("ProcessDestinationDirectoryForPossibleDelete: {0} {1}", di.FullName, ex.Message); } } } } catch (Exception ex) { _log.ErrorFormat("ProcessDestinationDirectoryForPossibleDelete: {0} {1}", di.FullName, ex.Message); } }
static void Rename(DirectoryInfo root, string projectName) { var directories = root.GetDirectories(); RenameFiles(root, projectName); foreach (DirectoryInfo dir in directories) { // Recurse into sub-directories if not excluded if (!ExcludedDirectories.Contains(dir.Name)) { Rename(dir, projectName); } } RenameFolders(root, projectName); }
static void RenameFolders(DirectoryInfo root, string projectName) { var directories = root.GetDirectories(); foreach (DirectoryInfo dir in directories) { // Rename if matches and is not exluced if (dir.Name.Contains(TemplateName) && !ExcludedDirectories.Contains(dir.Name)) { var path = dir.Parent.FullName; var newName = Path.Combine(path, dir.Name.Replace(TemplateName, projectName)); Console.WriteLine("Renaming " + newName); try { Directory.Move(dir.FullName, newName); } catch (Exception ex) { Console.WriteLine("FAILED: Could not rename " + dir.FullName + ". " + ex.Message); } } } }
private void BuildActionQueue() { _log.Info("Building Action Queue"); ProcessingStatus = BackupProcessingStatus.BuildingActionQueue; //Clear the action Queues ActionQueue.Clear(); SkipFileActionQueue.Clear(); DeleteActionStack.Clear(); if (_cancelToken.IsCancellationRequested) { _log.Info("Building Action Queue Cancelled"); ProcessingStatus = BackupProcessingStatus.Cancelled; return; } if (CheckDriveExists(SourceDirectory.Substring(0, 1)) && CheckSourceRootExists() && CheckDriveExists(DestinationDirectory.Substring(0, 1))) { if (BackupMode == BackupSetMode.Backup && RemoveDeleted) { List <DirectoryInfo> destDirs = IOHelper.GetDirectoriesPostOrder(DestinationDirectory); if (destDirs != null) { foreach (DirectoryInfo di in destDirs) { if (_cancelToken.IsCancellationRequested) { ProcessingStatus = BackupProcessingStatus.Cancelled; return; } ProcessDestinationDirectoryForPossibleDelete(di); } } } var dirs = IOHelper.GetDirectories(SourceDirectory); if (dirs != null) { foreach (DirectoryInfo di in dirs) { //Check if the directory should be excluded if (ExcludedDirectories == null || !ExcludedDirectories.Contains(di.FullName)) { if (_cancelToken.IsCancellationRequested) { ProcessingStatus = BackupProcessingStatus.Cancelled; return; } ProcessDirectoryForActions(di); } else { IOHelper.GetFiles(di.FullName) .ForEach(fi => SkipFileActionQueue.Enqueue(new SkipFileAction(fi.FullName))); } } } } _log.Info("Finished Building Action Queue"); ProcessingStatus = BackupProcessingStatus.ActionQueueBuilt; }