Вы можете сделать это без задания сценария и только 1 переменная User::FILE_NAME
.
Используйте foreach loop
в каталоге, заполните FILE_NAME
из этой задачи. Обработайте файл с помощью преобразования данных. Затем переместите файл. Затем просто пропустите ваш foreach loop
. Постепенно перемещая файлы, вы точно узнаете, что преуспело, а что не удалось, и сможете перезапустить ваш процесс, не откатываясь от файлов, которые были обработаны правильно и с нуля.
Если вы хотите подождать, чтобы переместить все, вы можете сделать двухэтапный ход. 1 в той же логике, что и выше, которая просто переименовывается в .processed или что-то в исходный каталог. Затем после завершения цикла добавьте еще одну фильтрацию foreach
в обработанные файлы, затем используйте ту же переменную FILE_NAME
и переместите ваши файлы.
Нет необходимости в script task
в любой ситуации.
Если вы действительно хотите использовать script task
. Поместите script task
после DFT
в foreach loop
. Иметь другую переменную, которая является object
, которая будет содержать datatable
или что-то в этом роде. Заполните это DataTable
с именем файла и т. Д. Затем после вашего foreach
вам понадобится another script task
, который загрузит таблицу и получит имя файла, который вы хотите обработать. Честно говоря, на этом последнем этапе проще всего использовать system.io
и перемещать файлы внутри скрипта.
Как бы вы использовать переменную, которая является datatable
что-то вроде (и я это пишу свободно, так это, вероятно, потребуются дополнительные шаги и проверки ошибок.)
Для занесения имен файлов в DataTable
, сделать File_Name
переменной читаемым , и DataTableVariableName
читать/записывать в задачу сценария, а затем начинать с чего-то вроде:
вы, возможно, на самом деле вам нужно проверить для null пользователя variable.value
перед этой строкой. Я не уверен.
system.data.datatable dt = (system.data.datatable)Dts.Variables["User::DataTableVariableName"].Value;
if (dt == null)
{
Write code to create your datatable
}
Add new DataRow to table -- lots of results on web about this and creating datatable.
Теперь у вас есть datatable
. После foreach loop
добавьте script task
, чтобы переместить обработанные файлы.
Снова начать с получения таблицы из переменной
system.data.datatable dt = (system.data.datatable)Dts.Variables["User::DataTableVariableName"].Value;
затем петли через datatable
, и я хотел бы предложить перенести файлы здесь.
foreach (dt datarow in dt.rows)
{
typically I like to suggest copying and then deleting the source file depending on how you over write. so you would do something like.
If (system.io.file.Exists(dr.["FileNameRowLable"].ToString())
{
system.io.file.copy(source, destination);
if (file.exists(destination))
{
file.delete(source);
}
}
}
Я думаю, что вы будете счастливее прилипание с движущимися файл в е oreach loop
так вам не нужно задача сценария.