2011-10-13 184 views
1

我使用SSIS读取输入中的.txt文件,并在其上执行我的业务逻辑将输出结果保存在名称与当前inpout文件相同的文件中(文件名动态存储在一个变量中)。SSIS检索foreach循环内的当前文件夹遍历子文件夹

当所有的文件都存储在同一个文件夹,我没有问题,访问他们,因为我用下面的表达式,为在数据流中的平面文件的连接字符串:"path" + @[User::inputFileName] + ".txt"

现在我要处理的文件夹与子文件夹(我在foreach循环中设置遍历子文件夹),我有一些与平面文件连接字符串的问题,因为我不能使用通配符,如:my path\\subfolder*" + @[User::inputFileName] + ".txt"其中每个子文件夹具有相同的名称,只更改名称的最后部分。

如何将当前子文件夹名保存在变量中,以便我可以按以下方式使用它?"path\\"+ @[User::currentSubFolder] +"\\" + @[User::inputFileName] + ".txt"

回答

1

我能解决我的问题,因此我在这里写下我的解决方案,以防其他人处于相同的情况。

我在我的foreach循环之前使用了一个脚本转换块。从它我可以检索当前的完整路径(以后在平面文件连接字符串中使用)以及不带扩展名的输入文件名作为包含SSIS脚本结果的输出文件名。

为了保持兴趣的价值,我使用了两个变量:一个用于文件名,一个用于路径。

这里的脚本代码:

Public Sub Main() 

    'Variable Index 0 => FileName 
    'Variable Index 1 => filePath 

    Dim fullPath As String = Dts.Variables.Item(1).Value.ToString 
    Dim fileName As String = Path.GetFileName(fullPath) 
    fileName = fileName.Substring(0, fileName.Length - 4) 

    Dts.Variables.Item(0).Value = fileName 
    Dim x As String = Dts.Variables.Item(0).Value.ToString 

    Dts.TaskResult = Dts.Results.Success 
End Sub 
相关问题