SSIS - 脚本任务检查子文件夹是否存在

时间:2016-08-08 20:49:48

标签: sql ssis

我想检查子文件夹是否存在。如果存在,继续前进。如果不存在则转到下一个任务。

我的子文件夹是“C:\ Folder1 \ Folder2 \ Folder3”我想检查Folder3是否存在。

我参与其中。创建2个变量

1> FolderPath = C:\ Folder1 \ Folder2

2 - ; FolderExists = Boolean = False

脚本任务 ReadOnlyVariable = @FolderPAth ReadWriteVariable = @FolderExists

按照脚本添加编辑脚本

    Dim DirExists As String

    DirExists = Dir(CStr(Dts.Variables("Folder3").Value))

    If DirExists <> "" Then

        Dts.Variables("Folder3").Value = True

    Else

        Dts.Variables("Folder3").Value = False

    End If

请有人纠正我。

1 个答案:

答案 0 :(得分:1)

根据你的评论,你似乎不在乎它是否是VB的c#所以这里是从头到尾的步骤,如何测试文件夹的存在并在约束优先级中使用它。

  • 定义2个包级别变量:Fo​​lderPath字符串,FolderExists布尔值 enter image description here
  • 添加脚本任务并配置C#并将FolderPath添加为ReadOnlyVariable,将FolderExists添加为ReadWriteVariable enter image description here
  • 点击编辑以编辑脚本
  • 滚动到顶部附近的“#region Namespaces”并添加using System.IO; enter image description here
  • 滚动到Main()子的定义并在下面的“TODO”之后添加第一行,以便例程变为:

    public void Main()
    {
        // TODO: Add your code here
        Dts.Variables["User::FolderExists"].Value = Directory.Exists(Dts.Variables["User::FolderPath"].Value.ToString());
    
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    
  • 脚本任务已完成,您现在应该可以使用FolderExists变量作为约束优先级的表达式。

  • 在包中添加下一步并使用绿色成功箭头连接,然后双击箭头并设置Constraint Options以评估Expression和Constraint,并将表达式简单地设置为FolderExists变量。 enter image description here

此解决方案已经过全面测试并且可以运行