Пример C # Script Task для этого приведен ниже. При этом используются переменные служб SSIS для исходной и целевой папок, и обязательно добавьте их в поле ReadOnlyVariables
, если вы храните их именно так. Убедитесь, что у вас есть ссылки, перечисленные ниже. Как указано ниже, если файл с таким именем существует, он будет перезаписан, чтобы избежать такой ошибки, однако я рекомендую подтвердить, что это соответствует вашим требованиям. Третий параметр File.Copy
управляет этим и может быть опущен, так как это не обязательный параметр.
using System.Linq;
using System.IO;
using System.Collections.Generic;
string sourceFolder = Dts.Variables["User::SourceDirectory"].Value.ToString();
string destinationFolder = Dts.Variables["User::DestinationDirectory"].Value.ToString();
Dictionary<string, string> files = new Dictionary<string, string>();
DirectoryInfo sourceDirectoryInfo = new DirectoryInfo(sourceFolder);
foreach (DirectoryInfo di in sourceDirectoryInfo.EnumerateDirectories())
{
//get most recently created .orig file
FileInfo fi = di.EnumerateFiles().Where(e => e.Extension == ".orig")
.OrderByDescending(f => f.CreationTime).First();
//add the full file path (FullName) as the key
//and the name only (Name) as the value
files.Add(fi.FullName, fi.Name);
}
foreach (var v in files)
{
//copy using key (full path) to destination folder
//by combining destination folder path with the file name
//true- overwrite file if file by same name exists
File.Copy(v.Key, destinationFolder + v.Value, true);
}