我认为您需要创建一个变量,该变量将文件夹路径和可执行文件名作为表达式进行评估。然后,您需要将这个计算为表达式的变量分配给Execute Process Task 的Executable 属性。此外,您需要在设计时有一个有效的可执行路径。
这是一个粗略的分步示例,展示了如何将变量传递给 Execute Process Task 的 Executable 属性。该示例是使用 SSIS 2008 R2 创建的,并且还使用三个 .bat 文件来说明功能。即使示例在 SSIS 2008 R2 中,逻辑也应该适用于 SSIS 2005。
创建三个 .bat 文件,即 Process_0.bat、Process_1.bat 和 Process_2.bat。请参阅屏幕截图#1。如屏幕截图 #2 - #4 所示,使用 echo 命令填充它们。
创建一个 SSIS 包。我在开头以 YYYYMMDD_hhmm 格式命名了包,然后是 SO 代表 Stack Overflow,然后是 SO 问题 id,最后是描述。这是为了让我以后可以轻松地引用它。参考截图#5。
创建以下变量:参考截图#6。
ExecutableFileName - 此变量是字符串类型。它将包含可执行文件名。
ExecutableFolder - 此变量是字符串类型。它将包含可执行文件的文件夹路径。
ExecutableFilePath - 此变量是字符串类型。不要为此变量键入任何值。这将是一个组合变量 ExecutableFolder 和 ExecutableFileName 以生成完整文件路径的表达式。参考截图#7。选择变量并按 F4 打开属性窗口。将 EvaluateAsExpression 设置为 True 并将表达式设置为 @[User::ExecutableFolder] + @[User::ExecutableFileName]
ExecutableOutput - 此变量是字符串类型。它将存储可执行文件的输出值。在这种情况下,由 .bat 文件回显的值。
在包的控制流路径上,放置 Execute Process Task 和 Script Task,如屏幕截图 #8 所示。
如屏幕截图 #9 - #11 所示配置执行流程任务。在 Task 的 Process 部分,您需要为初始配置指定一个 Executable 路径。此外,指定 StandardOutputVariable(此示例用于此示例)。在 Expressions 部分,通过指定变量 @[User::ExecutablePath]
覆盖 Executable 路径
在脚本任务上,替换屏幕截图中显示的 Main 方法 #12 - #13。
执行包。您应该得到如屏幕截图 #14 所示的输出。它显示 .bat 文件 Process_0.bat 已执行,输出为 "Process 0"。
现在,将变量 ExecutableFileName 的值更改为 Process_1.bat。不要进行任何其他更改。执行包。您应该得到如屏幕截图 #15 - #16 中所示的输出。它显示 .bat 文件 Process_1.bat 已执行,输出为 "Process 1"。
现在,将变量 ExecutableFileName 的值更改为 Process_2.bat。不要进行任何其他更改。执行包。您应该得到如屏幕截图 #17 - #18 中所示的输出。它显示 .bat 文件 Process_2.bat 已执行,输出为 "Process 2"。
希望对您有所帮助。
截图:
#1:
#2:
#3:
#4:
#5:
#6:
#7:
#8:
#9:
#10:
#11:
#12:
#13:
#14:
#15:
#16:
#17:
#18: