如何将参数从Windows命令提示符传递到Kitchen.bat(Pentaho)?

时间:2019-08-21 15:32:49

标签: windows batch-file pentaho pentaho-spoon

我的问题

  1. 我已经创建了Windows cmd文件test.cmd,希望将两个参数传递给Kitchen.bat(Pentaho)。

  2. 我通过传递两个参数在Windows命令行中调用test.cmdtest.cmd 1 2

  3. Spoon (设计器)中,我将两个参数写入日志文件。

作业完成后,我仍然看到变量本身,而不是传递的值(1 2)。

我尝试了什么?

首先,我怀疑bat文件中的“参数”是否有问题(它需要取值并传递给kitchen.bat),所以我用谷歌搜索并尝试了所有可能的解决方案,以下是我尝试过的解决方案

"-param:A=%A%"
"/param:A=%A%" 
/param "A:%A%" 
'/param:"A=%A%"' 

不幸的是,这些都不起作用。

这是我的源代码

test.bat

echo "Starting Job.."
echo "printing parameter.."
echo %1
echo %2

Set A=%1
Set B=%2
set LOG_PATH=C:\App\Reporter\Pentaho\Config\Utilities\Import.log
Set CONFIG_PATH=C:\App\Reporter\Pentaho\Config\Utilities

C:\App\REPORTER\Pentaho\Env\V8.2\kitchen.bat /file:"CONFIG_PATH"\test.kjb "/level=Basic" "/logfile=%LOG_PATH%" "-param:A=%A%" "-param:B=%B%"

pause

Windows命令行

Window Command Line Image

C:......>test.cmd 1 2

Pentaho KJB

Pentaho KJB Image

我使用“写入日志”功能从变量中检索值。

V1 = ${A}
V2 = ${B}

这里是结果

Result Image

V1 = ${A}
V2 = ${B}

显示变量本身而不是实际值(1、2)。

1 个答案:

答案 0 :(得分:1)

一些注意事项。

命名参数:您可以在KJB / KTR中设置参数,然后通过CMD调用将值传递给这些参数。

在您的KTR / KJB配置中,转到“参数”选项卡并设置所需的参数名称。 enter image description here

在这种情况下,我将A的默认值设置为1,将B的默认值设置为2,则应将默认值保留为空白。

CMD呼叫This documentation应该具有您需要的所有信息。 在您的情况下,我看到您正在尝试在KJB / KTR调用之前设置2个变量。我个人在Batch命令中使用%VAR%调用来引用Windows中的System / Ambient变量,并且它们工作得很好,我不知道在运行时设置变量是否对Pentaho有效,因为您为您的-param命令的值传递“文字”,因此我认为CMD不会解析%A%或%B%,因为它用引号引起来。

也就是说,Pentaho内部有很多方法可以解析变量并将其设置为运行时。

您的情况可能是您没有在KJB / KTR的配置中设置参数,因此在调用时,它找不到A或B,它只是打印$ {A}和$ {B}因为未设置任何参数,因此无法解析。