如何处理子文件夹内的文件,但不处理子文件夹内的文件夹

我已经开发了一个SSIS包,将加载到SQLSERVER数据库的Excel文件。 包裹工作正常。 但是我需要修改以下要求的包。

主文件夹名称:“根”子文件夹:“A”,“B”,“C”每个子文件夹内的文件夹:“已处理”,“无效”以及每当运行包时都要处理的新的Excel文件。

现在我需要处理每个子文件夹“A”,“B”和“C”中的文件,但不处理文件夹“已​​处理”和“无效”

这是因为一旦我处理了文件,包会将该文件移动到“已处理”文件夹,如果它无法处理特定的Excel文件包,则会将文件移动到“无效”文件夹。

因此,每个子文件夹内的“已处理”和“无效”文件夹只包含旧文件。 我尝试使用两个foreach循环…但失败,这是一个很大的困惑。 如果我启用“遍历子文件夹选项在foreach循环,它正在处理已处理的文件也请有人帮我在这个 文件夹层次结构

您需要一个脚本任务来填充variables中的文件夹和一个ForEach循环,该脚本将从脚本任务所在的数组中返回文件夹名称。

这里是一个方法:

http://microsoft-ssis.blogspot.com/2011/01/foreach-folder-enumerator.html

在ForEach里面,您需要添加另一个ForEach文件循环和其他组件。 请注意,我链接的方法有两个脚本任务的选项,第一个将只给你的父文件夹,这是你似乎要求,但第二个遍历所有子文件夹的孩子,所以你需要过滤如果使用该脚本,则不需要使用子文件夹。

这在源脚本组件中适用于我

System.IO.DirectoryInfo root = new System.IO.DirectoryInfo(@"c:\temp\"); foreach (var subDir in root.GetDirectories()) { foreach (var item in subDir.GetFiles("*.csv")) { Output0Buffer.AddRow(); Output0Buffer.FileName = item.FullName; } } Output0Buffer.EndOfRowset();