Windows“启动”命令未从“执行外壳脚本”步骤中返回

时间:2019-09-17 08:45:48

标签: cmd pentaho pentaho-spoon pentaho-data-integration

在水壶工作中,我们需要调用一个程序,该程序在停止之前不会返回。从命令行可以使用Windows的Start命令来完成此操作:

Start "some title" /b "C:\windows-style\path with spaces\program.exe" unqoted_param -i -s "quoted param"

通过在另一个shell中启动该程序,同时调用该shell的shell可以继续执行,效果很好。我认为,通过执行水壶工作,也可以通过使用Execute a shell script选项在Insert script步骤中简单地运行上述命令来实现这一点。

但是,执行将等待程序完成,而不是从新的shell中运行程序返回。这不是我们想要的,因为在程序运行时(这是VPN连接),我们需要执行其他步骤才能再次停止程序。

我怀疑这可能与水壶如何执行脚本有关,即通过将命令放入临时批处理文件中,然后运行该脚本。至少这是在作业日志中显示的方式:

2019/09/17 09:40:24 - Step Name - Executing command : cmd.exe /C "C:\Users\username\AppData\Local\Temp\kettle_69458258-d91e-11e9-b9fb-5f418528413ashell.bat"
2019/09/17 09:40:25 - Step Name - (stdout)
2019/09/17 09:40:25 - Step Name - (stdout) C:\pentaho_path>Start "some title" /b "C:\windows-style\path with spaces\program.exe" unqoted_param -i -s "quoted param"```

1 个答案:

答案 0 :(得分:1)

对于快速解决方案,您可以在作业中使用并行执行。

从“开始”步骤(或需要VPN之前的任何步骤)中,激活选项以并行运行后续步骤。然后,您可以将Shell脚本步骤放在其自己的分支中,而其余工作可以继续(在另一个分支上具有等待步骤,以允许VPN启动)。

根据问题,您可能正在从Pentaho服务器运行作业。如果您恰巧是通过带有kitchen.bat的调度程序运行它们的,则可以在调用Kitchen之前先启动VPN。