Cmd “窗口”;“开始”;命令不';t从内部返回“;执行shell脚本";步

Cmd “窗口”;“开始”;命令不';t从内部返回“;执行shell脚本";步,cmd,pentaho,pentaho-spoon,pentaho-data-integration,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返回并可以继续,这样做效果很好。我认为,通过在executeashellscript步骤中使用Insert script选项运行上述命令,

在水壶作业中,我们需要调用一个直到停止才返回的程序。在命令行中,可以使用Windows的
Start
命令执行此操作:

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

在另一个shell中启动程序,而调用它的shell返回并可以继续,这样做效果很好。我认为,通过在
executeashellscript
步骤中使用
Insert script
选项运行上述命令,也可以在一个kettle作业中实现这一点

但是,执行过程不是在新的shell中运行程序返回,而是等待程序完成。这不是我们想要的,因为当程序运行时(它是一个VPN连接),我们需要在程序再次停止之前执行一些其他步骤

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

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"```

为了快速解决问题,可以在作业中使用并行执行

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


根据问题,您可能正在Pentaho服务器上运行作业。如果您碰巧使用kitchen.bat从调度程序运行它们,您当然可以在调用kitchen之前启动VPN。

您在作业中尝试过并行执行吗?如果您将shell脚本步骤放在它自己的分支中,其余的作业可以继续(在另一个分支上有一个等待步骤,以允许VPN启动)。非常感谢,这很好!我以前确实尝试过这个,但我忽略了并行执行部分。硬编码等待不是最干净的解决方案,但在这种情况下,它是一个可接受的解决方案。我将把它转化为一个答案。