CopyFiles На основании измененной даты как вчерашней даты SSIS - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь скопировать файлы из одной папки в другую на основе getdate () - 1

ex: Folder1

1) Order112.xml Date Modified 04/10/2018
2) Order113.xml Date Modified 03/10/2018
3) Order012.xml Date Modified 03/10/2018 

Я хотел бы скопировать эти файлы в другое местопрежде чем обрабатывать их с помощью задачи потока данных.ех;Копирование только 2nd and 3rd file.Как я могу добиться этого либо с помощью выражения в foreachLoop container или с помощью задачи скрипта

Я пытался с помощью пользовательской переменной переместить все XML-файлы.Меня не очень беспокоит имя файла, только дата изменения

enter image description here

Любые идеи по добавлению выражения в цикл Foreach или достижению его с помощью задачи скрипта.

Ps: в имени файла нет даты. Я также должен иметь возможность изменить переменную на ex: getdate () - 2

1 Ответ

0 голосов
/ 04 октября 2018

Чтобы скопировать файлы на основе даты их последнего изменения, вам понадобится сценарий для копирования этих файлов.Класс FileInfo имеет свойство LastWriteTime, которое можно использовать для проверки даты последнего изменения файла.Приведенный ниже пример C # иллюстрирует это с помощью переменных SSIS, которые содержат имена папок источника и назначения, а также другую переменную SSIS для количества дней с текущей даты.Я предполагаю, что вас интересует только день, а не время, когда файл был изменен, поэтому LastWriteTime и дата (текущая дата минус заданное количество дней) представлены только в формате даты.

DirectoryInfo sourceFolder = new DirectoryInfo(Dts.Variables["User::SourceFolder"].Value.ToString());

string destFileName;
string sourceFileName;

int daysBehind = Convert.ToInt32(Dts.Variables["User::DaysFromToday"].Value);
string destFolder = Dts.Variables["User::DestinationFolder"].Value.ToString();

var allFiles = sourceFolder.EnumerateFiles("*.*", System.IO.SearchOption.AllDirectories).Where(path
    //make sure to use the Date property to omit times from the comparison
        => path.LastWriteTime.Date == DateTime.Today.Date.AddDays(daysBehind)).ToList();
   foreach (FileInfo fi in sourceFolder.GetFiles())
    {

    sourceFileName = System.IO.Path.GetFileName(fi.ToString());
    destFileName = System.IO.Path.Combine(destFolder, sourceFileName);
    System.IO.File.Copy(fi.FullName, destFileName, true);

   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...