public static void MoveFolderToParent(string folderpath, bool removeChildFoldersOnCompletion = true, MoveConflictStrategy strategy = MoveConflictStrategy.LeaveInFolder, bool forceRemoveChildFolder = false) { if (Directory.Exists(folderpath)) { var dir = new DirectoryInfo(folderpath); var parentDir = Path.Combine(dir.FullName, ".."); //this seems to be a little hack. To be changed in future. foreach (var file in dir.GetFiles()) { string newFilePath = Path.Combine(parentDir, file.Name); try { File.Move(file.FullName, newFilePath, strategy == MoveConflictStrategy.OverwriteInParent); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } int filesremaining = dir.GetFiles().Length; if ((removeChildFoldersOnCompletion == true && filesremaining == 0) || forceRemoveChildFolder) { Directory.Delete(folderpath); } } }
public static void MoveAllFoldersToParentInDir(string folderWithFoldersPath, bool removeChildFoldersOnCompletion = true, MoveConflictStrategy strategy = MoveConflictStrategy.LeaveInFolder) { if (Directory.Exists(folderWithFoldersPath)) { DirectoryInfo di = new DirectoryInfo(folderWithFoldersPath); var dirs = di.GetDirectories(); foreach (var dir in dirs) { MoveFolderToParent(dir.FullName); } } }