Если я правильно вас понимаю, у вас есть следующие указанные исходные и конечные каталоги:
var source = @"C:\TestArea\Destination\SUP000001\20041202 - 01 - 0002 - 001\NAC";
var dest = @"C:\TestArea\Destination\SUP000001\20041202-01-0002-001";
И вы хотите скопировать каталог NAC
(вместе со всем его содержимым) из source
вкаталог destination
, но проблема в том, что содержимое каталога NAC
копируется непосредственно в папку 20041202-01-0002-001
, когда вы действительно хотите получить путь, подобный следующему (и этот каталог NAC
должен быть идентичен исходному каталогу NAC
):
@"C:\TestArea\Destination\SUP000001\20041202-01-0002-001\NAC"
Если это так, то вам просто нужно сначала изменить путь к каталогу назначения, добавив в него имя исходного каталога, например, так::
destination = Path.Combine(destination, sourceDir.Name);
Вот пример кода, который должен помочь:
private static void CopyDirectory(string source, string destination)
{
var sourceDir = new DirectoryInfo(source);
if (!sourceDir.Exists) throw new DirectoryNotFoundException(nameof(source));
// Add last directory of source to destination and create it
destination = Path.Combine(destination, sourceDir.Name);
Directory.CreateDirectory(destination);
// Copy files from source to destination
foreach (var file in sourceDir.GetFiles())
{
file.CopyTo(Path.Combine(destination, file.Name));
}
// Recursively copy sub directories from source to destination
foreach (var subDir in sourceDir.GetDirectories())
{
CopyDirectory(subDir.FullName, destination);
}
}