动态文件夹 SSIS

Dynamic Folder SSIS

我正在创建一个包,它通过几个文件夹路径并加载 excel 个文件。 excel 个文件的文件路径如下。这些文件位于 "a" 文件夹中,该文件夹的名称每年都相同,但是 "xy*" 文件夹名称会根据年份而变化。因此,我希望 SSIS 通过搜索具有 "a" 文件夹的 H 驱动器来查找 excel 文件。我查看了 System.IO.Directory.GetDirectories(string, string,SearchOptions) 但这只给了我第一个子文件夹。例如 H:\x\xy2017。任何帮助深表感谢。

H:\x\xy2017\z\xy2017\a

H:\x\xy2017\z\xy2017\a

H:\x\xy2018\z\xy2018\a

这是我在脚本任务中用于递归循环遍历文件夹的 C# 代码。我不确定我做错了什么。

        Dts.Variables["User::varFolderPath1"].Value = Directory.GetFiles(@"S:\HEDIS", "*DMHM Lead Results*", SearchOption.AllDirectories);

        foreach (Object obj in Dts.Variables["User::varFolderPath1"].Value.ToString())
        {

            Console.WriteLine(Dts.Variables["User::varFolderPath1"].Value.ToString());

        }

使用"Foreach Loop Container"。

1 转到 "Collection" 并选择 "Foreach File Enumerator"。

2 它会询问包含文件的文件夹,在这里你必须选择你的主文件夹

即你的情况 (H:\x)。

3 然后您需要选中“遍历子文件夹”复选框,这样就可以了。

这是脚本任务答案。

  string root = @"S:\directory\";
        string folder = "root folder";
        DateTime lookbackDate = DateTime.Now.AddMonths(-6);

        string messageText = "";

        messageText += String.Format("We're looking for files that have been made since {0}", lookbackDate);
        MessageBox.Show(messageText); messageText += "\n";
        messageText += ("Starting directory search now\n");
        MessageBox.Show(messageText); messageText += "\n";

        string[] dirs = Directory.GetDirectories(root, folder, SearchOption.AllDirectories);
        foreach (string dir in dirs)
        {
            messageText += String.Format("Directory found! {0}", dir);
            MessageBox.Show(messageText); messageText += "\n";

            foreach (string file in Directory.GetFiles(dir))
            {
                DateTime filedate = File.GetCreationTime(file);
                string fname = Path.GetFileName(file);

                if (filedate >= lookbackDate)
                {
                    messageText += String.Format("MATCH! {0} - created {1}", fname, filedate);
                    MessageBox.Show(messageText); messageText += "\n";
                }
                else
                {
                    messageText += String.Format("TOO OLD! {0} - created {1}", fname, filedate);
                    MessageBox.Show(messageText); messageText += "\n";
                }

            }
        }

        messageText += ("\nDirectory search complete!");
        MessageBox.Show(messageText);