3

我在 SSIS 包编写方面有点新意,我在我的 SSIS 包中嵌套了循环,一个循环将所有文件夹循环到一个位置,内部循环循环遍历每个文件夹中的所有文件。

在文件夹级别循环中,我的第一个任务是脚本任务,其中我将所有文件路径提取到一个对象变量中,其中包级别范围为字符串数组,如下所示。

string targetDirectory = Convert.ToString(Dts.Variables["SourceFolderLocation"].Value);
string[] fileEntries = Directory.GetFiles(targetDirectory, "*.pdf");
Dts.Variables["FileList"].Value = fileEntries;

Dts.Variables["FileList"].Value 是我的具有包级范围的对象变量。

现在我的要求是文件夹级循环的脚本任务,首先重置该对象变量,然后将新文件列表设置到该对象变量中,就好像我访问文件夹时遇到任何异常,它不应该处理以前的文件夹的文件。

我的问题是如何在脚本任务 c# 代码中重置对象变量?所以它不会再次处理以前的文件夹的文件,而且我也没有得到 enumerator should not contain null value 错误。

任何帮助将不胜感激。

4

1 回答 1

1

如果我理解正确,您应该能够string[]在调用GetFiles“重置”之前将其设置为新的。

string[] fileEntries = new string[] {};
try {
    string targetDirectory = Convert.ToString(Dts.Variables["SourceFolderLocation"].Value);
    fileEntries = Directory.GetFiles(targetDirectory, "*.pdf");
    Dts.Variables["FileList"].Value = fileEntries;
}
catch (Exeception e) { 
    // handle exception
}
于 2017-02-28T13:13:52.467 回答