Копировать файлы между папками;с файловыми префиксами, указанными в csv / excel - PullRequest
0 голосов
/ 22 мая 2018

Я делаю первые шаги в этом инструменте и хотел бы скопировать набор файлов Excel из одной папки в другую.В исходной папке есть набор файлов с суффиксом ГГГГММ, и мне придется копировать только файлы нужного месяца (зависимая переменная запроса в BD).

Исходная папка содержит несколько имен файлов Excel с"prefix_name_YYYYMM.xlsx", и префиксы будут доступны в текстовом файле или, возможно, в формате Excel (что проще в реализации!).

Я читал некоторые статьи о «Контейне цикла по каждому элементу» и «Файл»Системная задача "для всех файлов в папке.

Но я не могу себе представить, как я получу различные имена / префиксы файлов для подачи в цикл и получу все файлы с префиксом 1_YYYYMM _ *.XLSx

Примечание: клиент не хочет заполнять таблицу сервера sql «списком префиксных файлов».

Ответы [ 2 ]

0 голосов
/ 08 августа 2018

Этого можно достичь с помощью задачи «Файловая система» в цикле Foreach.Следующие шаги описывают это далее.Несколько вещей, которые нужно отметить в задаче «Файловая система», вам нужно установить для DelayValidation значение true, и если вы собираетесь копировать новые файлы, которые заменят старые, то OverwriteDestination также необходимо будет установить в значение true.

  • Добавьте цикл Foreach в свой поток управления и настройте его в качестве перечислителя файлов Foreach.
  • На панели коллекций выберите исходную папку.
  • Для файловполе, используйте ваш префикс с *, чтобы получить все файлы с этим префиксом.Например, prefix_name_YYYYMM * .xlsx.
  • На панели «Сопоставление переменных» добавьте строковую переменную и установите для нее значение индекса 0.
  • В цикле Foreach добавьте задачу файловой системы с помощьюоперация копирования файла.Для соединения источника установите IsSourcePathVariable в значение true, затем добавьте ту же переменную, которая использовалась в отображении цикла по каждому элементу, что и SourceVariable.
0 голосов
/ 22 мая 2018

, если вы хотите получить различные имена / префиксы файлов для подачи в цикл, используйте код c # в задаче «Сценарий»

   string SourceDirectory = Dts.Variables["User::varSourceFolder"].Value.ToString();
                string[] fileEntries = Directory.GetFiles(SourceDirectory);

foreach (string fileName in fileEntries)
                {.....}
...