Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Confirm
Close Dialog

Copy Directory (Overwrites Destination Files)

Description
This script will copy the source folder (set it on line 10) to the destination folder (set it on line 11) and will overwrite existing files at the destination. You can change this script to not overwrite by setting overwriteDestination on line 10 to false.
Language
C#.net
Minimum Version
Created By
Keith Lammers (BFS)
Contributors
-
Date Created
Jan 27, 2022
Date Last Modified
Jan 27, 2022

Scripted Function (Macro) Code

using System;
using System.Drawing;
using System.IO;

public static class DisplayFusionFunction
{
	public static void Run(IntPtr windowHandle)
	{
		// Change this to false if you don't want to overwrite existing files
		bool overwriteDestination = true;
		
		// Set the source and destination folders here
		string sourceFolder = @"D:\temp\CodePreviewHandler";
		string destinationFolder = @"D:\temp\CodePreviewHandler Copy";
		
		// Copy the source to the destination (change "true" to "false" if you don't want to copy sub-folders)
		CopyDirectory(sourceFolder, destinationFolder, true, overwriteDestination);
	}
	
	static void CopyDirectory(string sourceDir, string destinationDir, bool recursive, bool overwrite)
	// Grabbed this code from the Microsoft docs: https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-copy-directories
	{
	    // Get information about the source directory
	    var dir = new DirectoryInfo(sourceDir);
	
	    // Check if the source directory exists
	    if (!dir.Exists)
	        throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}");
	
	    // Cache directories before we start copying
	    DirectoryInfo[] dirs = dir.GetDirectories();
	
	    // Create the destination directory
	    Directory.CreateDirectory(destinationDir);
	
	    // Get the files in the source directory and copy to the destination directory
	    foreach (FileInfo file in dir.GetFiles())
	    {
	        string targetFilePath = Path.Combine(destinationDir, file.Name);
	        file.CopyTo(targetFilePath, overwrite);
	    }
	
	    // If recursive and copying subdirectories, recursively call this method
	    if (recursive)
	    {
	        foreach (DirectoryInfo subDir in dirs)
	        {
	            string newDestinationDir = Path.Combine(destinationDir, subDir.Name);
	            CopyDirectory(subDir.FullName, newDestinationDir, true, overwrite);
	        }
	    }
	}
}