windows - 如何将参数从 Windows 命令提示符传递到 Kitchen.bat (Pentaho)?
问题描述
我的问题
我创建了一个 Windows cmd 文件
test.cmd
,它期望将两个参数传递给Kitchen.bat
(Pentaho)。我
test.cmd
通过传递两个参数在 Windows 命令行中调用:test.cmd 1 2
在Spoon (designer) 中,我将这两个参数写入日志文件。
作业完成后,我仍然看到变量本身,而不是我传递的值 (1 2)。
我试过什么?
首先,我怀疑 bat 文件中的“参数”有问题(它在哪里获取值并传递给 kitchen.bat),所以我用谷歌搜索并尝试了所有可能的解决方案,下面是我尝试过的。
"-param:A=%A%"
"/param:A=%A%"
/param "A:%A%"
'/param:"A=%A%"'
不幸的是,这些都不起作用。
这是我的源代码
测试.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 命令行:
C:......>test.cmd 1 2
Pentaho KJB :
我使用“写入日志”功能从变量中检索值。
V1 = ${A}
V2 = ${B}
这里的结果
V1 = ${A}
V2 = ${B}
显示变量本身而不是实际值 (1, 2)。
解决方案
有几件事要记住。
命名参数:您可以在 KJB/KTR 中设置参数,并通过 CMD 调用将值传递给这些参数。
在您的 KTR/KJB 配置中,转到参数选项卡并设置所需的参数名称。
在这种情况下,我为 A 设置了默认值 1,为 B 设置了 2,您应该将默认值留空。
CMD 调用:此文档应包含您需要的所有信息。你在你的情况下,我看到你试图在 KJB/KTR 调用之前设置 2 个变量。我个人在我的批处理命令中使用 %VAR% 调用来引用 Windows 中的系统/环境变量,它们工作得很好,我不知道在运行时设置变量是否适用于 Pentaho,因为你是为您的 -param 命令的值传递一个“文字”,所以我认为 CMD 不会解析 %A% 或 %B%,因为它用引号括起来。
也就是说,Pentaho 中有很多方法可以解析变量并将它们设置为运行时。
您的情况可能是您没有在 KJB/KTR 的配置中设置参数,所以在调用时,它没有找到 A 或 B,它只是打印 ${A} amd ${B} 因为没有参数已设置,因此未解决。
推荐阅读
- swift - 如何在swift xcode中设置框填充颜色值
- c# - 如何在 Microsoft 图表控件的中心仅显示 Y 轴的一条虚线?
- hive - DynamoDB EMR Hive 连接器一次写入 1 个项目
- java - Apache Spark - 'LeftAnti' 加入不明确的列错误
- selenium - 在 browserstack 上运行测试会抛出“无法读取 null 的属性‘功能’”
- uilabel - UILabel 是字符换行而不是正确换行
- json - 在 Bot 模拟器中打印表,其字段包含类对象值
- angular - 获取文本值
- 点击后的元素
- paypal - 贝宝订阅:批准终身?
- javascript - 如何使用对象条目创建对象数组?